Spellcheck the codebase
Change-Id: If581dcdf063c3b45237a424f0dade7a033151893
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/83267
Commit-Queue: Adam Langley <agl@google.com>
Auto-Submit: David Benjamin <davidben@google.com>
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/API-CONVENTIONS.md b/API-CONVENTIONS.md
index ba6206e..94c375d 100644
--- a/API-CONVENTIONS.md
+++ b/API-CONVENTIONS.md
@@ -284,7 +284,7 @@
transfer, no longer owns it. As a corollary, the caller may no longer reference
the object without a separate guarantee on the lifetime. The function may even
release the object before returning. Callers that wish to independently retain a
-transfered object must therefore take a reference or make a copy before
+transferred object must therefore take a reference or make a copy before
transferring. Callers should also take note of whether the function is
documented to transfer pointers unconditionally or only on success. Unlike C++
and Rust, functions in BoringSSL typically only transfer on success.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 23bd9bb..59bb999 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -382,7 +382,7 @@
if(NOT WIN32)
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
endif()
- # Clang's integerated assembler does not support debug symbols.
+ # Clang's integrated assembler does not support debug symbols.
if(NOT CMAKE_ASM_COMPILER_ID MATCHES "Clang")
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,-g")
endif()
diff --git a/INCORPORATING.md b/INCORPORATING.md
index bc80923..415e2dc 100644
--- a/INCORPORATING.md
+++ b/INCORPORATING.md
@@ -108,7 +108,7 @@
If you are using multiple versions in a single binary, in different shared
objects, ensure you build BoringSSL with `-fvisibility=hidden` and do not
export any of BoringSSL's symbols. This will prevent any collisions with other
-verisons that may be included in other shared objects. Note that this requires
+versions that may be included in other shared objects. Note that this requires
that all callers of BoringSSL APIs live in the same shared object as BoringSSL.
If you require that BoringSSL APIs be used across shared object boundaries,
diff --git a/PORTING.md b/PORTING.md
index 3faf757..4bf616c 100644
--- a/PORTING.md
+++ b/PORTING.md
@@ -283,7 +283,7 @@
## Significant API additions
-In some places, BoringSSL has added significant APIs. Use of these APIs goes beyound “porting” and means giving up on OpenSSL compatibility.
+In some places, BoringSSL has added significant APIs. Use of these APIs goes beyond “porting” and means giving up on OpenSSL compatibility.
One example of this has already been mentioned: the [CBS and CBB](https://commondatastorage.googleapis.com/chromium-boringssl-docs/bytestring.h.html) functions should be used whenever parsing or serialising data.
diff --git a/crypto/asn1/a_time.cc b/crypto/asn1/a_time.cc
index 5adf49d..af240a9 100644
--- a/crypto/asn1/a_time.cc
+++ b/crypto/asn1/a_time.cc
@@ -97,7 +97,7 @@
goto done;
}
- // Grow the string to accomodate the two-digit century.
+ // Grow the string to accommodate the two-digit century.
if (!ASN1_STRING_set(ret, nullptr, in->length + 2)) {
goto err;
}
diff --git a/crypto/asn1/asn1_test.cc b/crypto/asn1/asn1_test.cc
index a4ea5fd..b91f60a 100644
--- a/crypto/asn1/asn1_test.cc
+++ b/crypto/asn1/asn1_test.cc
@@ -1318,7 +1318,7 @@
std::string(1, '\0') + "\n\x80\xff,+\"\\<>;"},
// Flags control different escapes. Note that any escape flag will cause
- // blackslashes to be escaped.
+ // backslashes to be escaped.
{V_ASN1_T61STRING,
{0, '\n', 0x80, 0xff, ',', '+', '"', '\\', '<', '>', ';'},
0,
@@ -2554,7 +2554,7 @@
}
}
-// Exhaustively test POSIX time conversions for every day across the millenium.
+// Exhaustively test POSIX time conversions for every day across the millennium.
TEST(ASN1Test, POSIXTime) {
const int kDaysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
diff --git a/crypto/asn1/tasn_enc.cc b/crypto/asn1/tasn_enc.cc
index e935b34..07d74a8 100644
--- a/crypto/asn1/tasn_enc.cc
+++ b/crypto/asn1/tasn_enc.cc
@@ -87,7 +87,7 @@
// Historically, |aclass| was repurposed to pass additional flags into the
// encoding process.
assert((aclass & ASN1_TFLG_TAG_CLASS) == aclass);
- // If not overridding the tag, |aclass| is ignored and should be zero.
+ // If not overriding the tag, |aclass| is ignored and should be zero.
assert(tag != -1 || aclass == 0);
// All fields are pointers, except for boolean |ASN1_ITYPE_PRIMITIVE|s.
@@ -238,7 +238,7 @@
// Historically, |iclass| was repurposed to pass additional flags into the
// encoding process.
assert((iclass & ASN1_TFLG_TAG_CLASS) == iclass);
- // If not overridding the tag, |iclass| is ignored and should be zero.
+ // If not overriding the tag, |iclass| is ignored and should be zero.
assert(tag != -1 || iclass == 0);
// Work out tag and class to use: tagging may come either from the
diff --git a/crypto/asn1/tasn_fre.cc b/crypto/asn1/tasn_fre.cc
index c9138af..b2ea466 100644
--- a/crypto/asn1/tasn_fre.cc
+++ b/crypto/asn1/tasn_fre.cc
@@ -92,7 +92,7 @@
}
asn1_enc_free(pval, it);
// If we free up as normal we will invalidate any ANY DEFINED BY
- // field and we wont be able to determine the type of the field it
+ // field and we won't be able to determine the type of the field it
// defines. So free up in reverse order.
for (int i = it->tcount - 1; i >= 0; i--) {
const ASN1_TEMPLATE *seqtt = asn1_do_adb(pval, &it->templates[i], 0);
@@ -128,7 +128,7 @@
void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it) {
// Historically, |it->funcs| for primitive types contained an
- // |ASN1_PRIMITIVE_FUNCS| table of calbacks.
+ // |ASN1_PRIMITIVE_FUNCS| table of callbacks.
assert(it->funcs == nullptr);
int utype = it->itype == ASN1_ITYPE_MSTRING ? -1 : it->utype;
diff --git a/crypto/asn1/tasn_new.cc b/crypto/asn1/tasn_new.cc
index 0739a4d..8756830 100644
--- a/crypto/asn1/tasn_new.cc
+++ b/crypto/asn1/tasn_new.cc
@@ -214,7 +214,7 @@
}
// Historically, |it->funcs| for primitive types contained an
- // |ASN1_PRIMITIVE_FUNCS| table of calbacks.
+ // |ASN1_PRIMITIVE_FUNCS| table of callbacks.
assert(it->funcs == nullptr);
int utype;
@@ -261,7 +261,7 @@
static void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it) {
int utype;
// Historically, |it->funcs| for primitive types contained an
- // |ASN1_PRIMITIVE_FUNCS| table of calbacks.
+ // |ASN1_PRIMITIVE_FUNCS| table of callbacks.
assert(it == nullptr || it->funcs == nullptr);
if (!it || (it->itype == ASN1_ITYPE_MSTRING)) {
utype = -1;
diff --git a/crypto/bio/bio_mem.cc b/crypto/bio/bio_mem.cc
index aee5f7d..cbca18c 100644
--- a/crypto/bio/bio_mem.cc
+++ b/crypto/bio/bio_mem.cc
@@ -50,7 +50,7 @@
// |num| is used to store the value that this BIO will return when it runs
// out of data. If it's negative then the retry flags will also be set. Since
- // this is static data, retrying wont help
+ // this is static data, retrying won't help
ret->num = 0;
return ret;
diff --git a/crypto/cipher/asm/aes128gcmsiv-x86_64.pl b/crypto/cipher/asm/aes128gcmsiv-x86_64.pl
index dec73fc..09da04f 100644
--- a/crypto/cipher/asm/aes128gcmsiv-x86_64.pl
+++ b/crypto/cipher/asm/aes128gcmsiv-x86_64.pl
@@ -307,7 +307,7 @@
.Lhtable_polyval_no_prefix:
# At this point we know the number of blocks is a multiple of 8. However,
# the reduction in the main loop includes a multiplication by x^(-128). In
- # order to counter this, the existing tag needs to be multipled by x^128.
+ # order to counter this, the existing tag needs to be multiplied by x^128.
# In practice, this just means that it is loaded into $Xhi, not $T.
vpxor $T, $T, $T
vmovdqa ($Tp), $Xhi
diff --git a/crypto/cipher/asm/chacha20_poly1305_armv8.pl b/crypto/cipher/asm/chacha20_poly1305_armv8.pl
index 06a35e0..a4921e2 100644
--- a/crypto/cipher/asm/chacha20_poly1305_armv8.pl
+++ b/crypto/cipher/asm/chacha20_poly1305_armv8.pl
@@ -869,7 +869,7 @@
subs $adl, $adl, #1
b.gt .Lseal_hash_extra_load
- // Hash in the final padded extra_in blcok
+ // Hash in the final padded extra_in block
___
&poly_add_vec($T0);
&poly_mul();
diff --git a/crypto/compiler_test.cc b/crypto/compiler_test.cc
index d703a71..ef29e78 100644
--- a/crypto/compiler_test.cc
+++ b/crypto/compiler_test.cc
@@ -109,7 +109,7 @@
// Require that |int| be exactly 32 bits. OpenSSL historically mixed up
// |unsigned| and |uint32_t|, so we require it be at least 32 bits. Requiring
- // at most 32-bits is a bit more subtle. C promotes arithemetic operands to
+ // at most 32-bits is a bit more subtle. C promotes arithmetic operands to
// |int| when they fit. But this means, if |int| is 2N bits wide, multiplying
// two maximum-sized |uintN_t|s is undefined by integer overflow!
//
diff --git a/crypto/cpu_arm_linux.h b/crypto/cpu_arm_linux.h
index e67ee52..1c81d4e 100644
--- a/crypto/cpu_arm_linux.h
+++ b/crypto/cpu_arm_linux.h
@@ -50,7 +50,7 @@
return a->len == b_len && OPENSSL_memcmp(a->data, b, b_len) == 0;
}
-// STRING_PIECE_split finds the first occurence of |sep| in |in| and, if found,
+// STRING_PIECE_split finds the first occurrence of |sep| in |in| and, if found,
// sets |*out_left| and |*out_right| to |in| split before and after it. It
// returns one if |sep| was found and zero otherwise.
static int STRING_PIECE_split(STRING_PIECE *out_left, STRING_PIECE *out_right,
diff --git a/crypto/dsa/dsa.cc b/crypto/dsa/dsa.cc
index f0af469..865e506 100644
--- a/crypto/dsa/dsa.cc
+++ b/crypto/dsa/dsa.cc
@@ -559,7 +559,7 @@
// retry is negligible, let alone 32. Unfortunately, DSA was mis-specified,
// so invalid parameters are reachable from most callers handling untrusted
// private keys. (The |dsa_check_key| call above is not sufficient. Checking
- // whether arbitrary paremeters form a valid DSA group is expensive.)
+ // whether arbitrary parameters form a valid DSA group is expensive.)
static const int kMaxIterations = 32;
int iters = 0;
redo:
diff --git a/crypto/ec/hash_to_curve.cc b/crypto/ec/hash_to_curve.cc
index 65481a5..0e98792 100644
--- a/crypto/ec/hash_to_curve.cc
+++ b/crypto/ec/hash_to_curve.cc
@@ -33,7 +33,7 @@
// becomes a performance bottleneck, some possible optimizations by
// specializing it to the curve:
//
-// - Rather than using a generic |felem_exp|, specialize the exponentation to
+// - Rather than using a generic |felem_exp|, specialize the exponentiation to
// c2 with a faster addition chain.
//
// - |felem_mul| and |felem_sqr| are indirect calls to generic Montgomery
diff --git a/crypto/evp/p_mldsa.cc b/crypto/evp/p_mldsa.cc
index d7db6ab..ae6583c 100644
--- a/crypto/evp/p_mldsa.cc
+++ b/crypto/evp/p_mldsa.cc
@@ -283,7 +283,7 @@
// whether a private key is valid. We only implement the "seed"
// representation. Give this case a different error for easier diagnostics.
//
- // The "expandedKey" representation was a last-minute accomodation for
+ // The "expandedKey" representation was a last-minute accommodation for
// legacy hardware, which should be updated to use seeds. Supporting it
// complicates the notion of a private key with both seedful and seedless
// variants.
diff --git a/crypto/ex_data.cc b/crypto/ex_data.cc
index e93f7c9..4f025e4 100644
--- a/crypto/ex_data.cc
+++ b/crypto/ex_data.cc
@@ -27,8 +27,8 @@
struct crypto_ex_data_func_st {
- long argl; // Arbitary long
- void *argp; // Arbitary void pointer
+ long argl; // Arbitrary long
+ void *argp; // Arbitrary void pointer
CRYPTO_EX_free *free_func;
// next points to the next |CRYPTO_EX_DATA_FUNCS| or NULL if this is the last
// one. It may only be read if synchronized with a read from |num_funcs|.
diff --git a/crypto/fipsmodule/aes/aes_nohw.cc.inc b/crypto/fipsmodule/aes/aes_nohw.cc.inc
index 14f46b1..c9cfb37 100644
--- a/crypto/fipsmodule/aes/aes_nohw.cc.inc
+++ b/crypto/fipsmodule/aes/aes_nohw.cc.inc
@@ -187,8 +187,8 @@
//
// Observe that the distances between corresponding bits in bitsliced and
// compact bit orders match. If we line up corresponding words of each block,
-// the bitsliced and compact representations may be converted by tranposing bits
-// in corresponding logical bytes. Continuing the 64-bit example:
+// the bitsliced and compact representations may be converted by transposing
+// bits in corresponding logical bytes. Continuing the 64-bit example:
//
// block_a[0] = a0 a1 a2 a3 | a8 a9 a10 a11 | a16 a17 a18 a19 ...
// block_b[0] = b0 b1 b2 b3 | b8 b9 b10 b11 | b16 b17 b18 b19 ...
diff --git a/crypto/fipsmodule/aes/asm/aesni-x86_64.pl b/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
index 930ae14..85632e9 100644
--- a/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
+++ b/crypto/fipsmodule/aes/asm/aesni-x86_64.pl
@@ -64,7 +64,7 @@
# nothing one can do and the result appears optimal. CCM result is
# identical to CBC, because CBC-MAC is essentially CBC encrypt without
# saving output. CCM CTR "stays invisible," because it's neatly
-# interleaved wih CBC-MAC. This provides ~30% improvement over
+# interleaved with CBC-MAC. This provides ~30% improvement over
# "straightforward" CCM implementation with CTR and CBC-MAC performed
# disjointly. Parallelizable modes practically achieve the theoretical
# limit.
@@ -2262,7 +2262,7 @@
movdqu `16*0`($inp),$inout0 # load input
movdqa $rndkey0,$twmask
movdqu `16*1`($inp),$inout1
- pxor @tweak[0],$inout0 # intput^=tweak^round[0]
+ pxor @tweak[0],$inout0 # input^=tweak^round[0]
movdqu `16*2`($inp),$inout2
pxor @tweak[1],$inout1
aesdec $rndkey1,$inout0
@@ -3778,7 +3778,7 @@
mov 56($disp),%r11 # disp->HandlerData
mov 0(%r11),%r10d # HandlerData[0]
- lea (%rsi,%r10),%r10 # prologue lable
+ lea (%rsi,%r10),%r10 # prologue label
cmp %r10,%rbx # context->Rip<prologue label
jb .Lcommon_seh_tail
@@ -3825,7 +3825,7 @@
mov 56($disp),%r11 # disp->HandlerData
mov 0(%r11),%r10d # HandlerData[0]
- lea (%rsi,%r10),%r10 # prologue lable
+ lea (%rsi,%r10),%r10 # prologue label
cmp %r10,%rbx # context->Rip<prologue label
jb .Lcommon_seh_tail
diff --git a/crypto/fipsmodule/aes/asm/ghash-ssse3-x86.pl b/crypto/fipsmodule/aes/asm/ghash-ssse3-x86.pl
index c208a4f..70f1e25 100644
--- a/crypto/fipsmodule/aes/asm/ghash-ssse3-x86.pl
+++ b/crypto/fipsmodule/aes/asm/ghash-ssse3-x86.pl
@@ -53,7 +53,7 @@
# 113355
#
# Next we account for GCM's confusing bit order. The "first" bit is the least
-# significant coefficient, but GCM treats the most sigificant bit within a byte
+# significant coefficient, but GCM treats the most significant bit within a byte
# as first. Bytes are little-endian, and bits are big-endian. We reverse the
# bytes in XMM registers for a consistent bit and byte ordering, but this means
# the least significant bit is the most significant coefficient and vice versa.
diff --git a/crypto/fipsmodule/aes/asm/ghash-ssse3-x86_64.pl b/crypto/fipsmodule/aes/asm/ghash-ssse3-x86_64.pl
index 1322e61..4d478e7 100644
--- a/crypto/fipsmodule/aes/asm/ghash-ssse3-x86_64.pl
+++ b/crypto/fipsmodule/aes/asm/ghash-ssse3-x86_64.pl
@@ -53,7 +53,7 @@
# 113355
#
# Next we account for GCM's confusing bit order. The "first" bit is the least
-# significant coefficient, but GCM treats the most sigificant bit within a byte
+# significant coefficient, but GCM treats the most significant bit within a byte
# as first. Bytes are little-endian, and bits are big-endian. We reverse the
# bytes in XMM registers for a consistent bit and byte ordering, but this means
# the least significant bit is the most significant coefficient and vice versa.
diff --git a/crypto/fipsmodule/aes/ctr.cc.inc b/crypto/fipsmodule/aes/ctr.cc.inc
index cf9ca18..8f18831 100644
--- a/crypto/fipsmodule/aes/ctr.cc.inc
+++ b/crypto/fipsmodule/aes/ctr.cc.inc
@@ -73,7 +73,7 @@
(*func)(in, out, blocks, key, ivec);
// (*func) does not update ivec, caller does:
CRYPTO_store_u32_be(ivec + 12, ctr32);
- // ... overflow was detected, propogate carry.
+ // ... overflow was detected, propagate carry.
if (ctr32 == 0) {
ctr96_inc(ivec);
}
diff --git a/crypto/fipsmodule/bn/asm/armv8-mont.pl b/crypto/fipsmodule/bn/asm/armv8-mont.pl
index 80e0eea..59a7e0e 100644
--- a/crypto/fipsmodule/bn/asm/armv8-mont.pl
+++ b/crypto/fipsmodule/bn/asm/armv8-mont.pl
@@ -504,7 +504,7 @@
adc $acc5,$acc5,$t1
adds $acc5,$acc5,$t2
- sub $t0,$ap_end,$num // rewinded ap
+ sub $t0,$ap_end,$num // rewound ap
adc $acc6,xzr,xzr // t[14]
add $acc6,$acc6,$t3
@@ -854,7 +854,7 @@
// to be zero at this point
ldp $a0,$a1,[$tp,#8*0]
sub $cnt,$np_end,$np // done yet?
- sub $t2,$np_end,$num // rewinded np
+ sub $t2,$np_end,$num // rewound np
ldp $a2,$a3,[$tp,#8*2]
ldp $a4,$a5,[$tp,#8*4]
ldp $a6,$a7,[$tp,#8*6]
@@ -1212,7 +1212,7 @@
//adc $carry,$carry,xzr
cbnz $cnt,.Loop_mul4x_1st_tail
- sub $t1,$ap_end,$num // rewinded $ap
+ sub $t1,$ap_end,$num // rewound $ap
cbz $t0,.Lmul4x_proceed
ldp $a0,$a1,[$ap,#8*0]
@@ -1354,7 +1354,7 @@
//adc $carry,$carry,xzr
cbnz $cnt,.Loop_mul4x_tail
- sub $t1,$np,$num // rewinded np?
+ sub $t1,$np,$num // rewound np?
adc $carry,$carry,xzr
cbz $t0,.Loop_mul4x_break
diff --git a/crypto/fipsmodule/bn/asm/co-586.pl b/crypto/fipsmodule/bn/asm/co-586.pl
index c3f4e52..fee2c55 100644
--- a/crypto/fipsmodule/bn/asm/co-586.pl
+++ b/crypto/fipsmodule/bn/asm/co-586.pl
@@ -46,17 +46,17 @@
&mul("edx");
&add($c0,"eax");
- &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # laod next a
+ &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 0; # load next a
&mov("eax",&wparam(0)) if $pos > 0; # load r[]
###
&adc($c1,"edx");
- &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0; # laod next b
- &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1; # laod next b
+ &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 0; # load next b
+ &mov("edx",&DWP(($nb)*4,$b,"",0)) if $pos == 1; # load next b
###
&adc($c2,0);
# is pos > 1, it means it is the last loop
&mov(&DWP($i*4,"eax","",0),$c0) if $pos > 0; # save r[];
- &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # laod next a
+ &mov("eax",&DWP(($na)*4,$a,"",0)) if $pos == 1; # load next a
}
sub sqr_add_c
diff --git a/crypto/fipsmodule/cipher/cipher.cc.inc b/crypto/fipsmodule/cipher/cipher.cc.inc
index 0b2e4f9..bd07890 100644
--- a/crypto/fipsmodule/cipher/cipher.cc.inc
+++ b/crypto/fipsmodule/cipher/cipher.cc.inc
@@ -187,7 +187,7 @@
ctx->buf_len = 0;
ctx->final_used = 0;
- // Clear the poisoned flag to permit re-use of a CTX that previously had a
+ // Clear the poisoned flag to permit reuse of a CTX that previously had a
// failed operation.
ctx->poisoned = 0;
return 1;
diff --git a/crypto/fipsmodule/digest/internal.h b/crypto/fipsmodule/digest/internal.h
index dca8e2c..1174fcc 100644
--- a/crypto/fipsmodule/digest/internal.h
+++ b/crypto/fipsmodule/digest/internal.h
@@ -25,7 +25,7 @@
// env_md_st is typoed ("evp" -> "env"), but the typo comes from OpenSSL and
// some consumers forward-declare these structures so we're leaving it alone.
struct env_md_st {
- // type contains a NID identifing the digest function. (For example,
+ // type contains a NID identifying the digest function. (For example,
// NID_md5.)
int type;
diff --git a/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl b/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl
index 24efdc0..cc878d5 100755
--- a/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl
+++ b/crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl
@@ -959,7 +959,7 @@
################################# reduction
mulx 8*0+128(%r14), $t0, $t1
- adcx $t0, $acc3 # guranteed to be zero
+ adcx $t0, $acc3 # guaranteed to be zero
adox $t1, $acc4
mulx 8*1+128(%r14), $t0, $t1
diff --git a/crypto/fipsmodule/ec/asm/p256_beeu-armv8-asm.pl b/crypto/fipsmodule/ec/asm/p256_beeu-armv8-asm.pl
index 66fb286..c104b4f 100644
--- a/crypto/fipsmodule/ec/asm/p256_beeu-armv8-asm.pl
+++ b/crypto/fipsmodule/ec/asm/p256_beeu-armv8-asm.pl
@@ -190,7 +190,7 @@
# What matters here is the order of instructions relative to certain other
# instructions, i.e.
# - lsr and lsl must precede orr of the corresponding registers.
-# - lsl must preced the lsr of the same register afterwards.
+# - lsl must precede the lsr of the same register afterwards.
# The chosen order of the instructions overall is to try and maximize
# the pipeline usage.
sub SHIFT256 {
diff --git a/crypto/fipsmodule/ec/internal.h b/crypto/fipsmodule/ec/internal.h
index 2c610ba..3d87bb8 100644
--- a/crypto/fipsmodule/ec/internal.h
+++ b/crypto/fipsmodule/ec/internal.h
@@ -485,7 +485,7 @@
//
// TODO(davidben): This constrains |EC_FELEM|'s internal representation, adds
// many indirect calls in the middle of the generic code, and a bunch of
- // conversions. If p224-64.c were easily convertable to Montgomery form, we
+ // conversions. If p224-64.c were easily convertible to Montgomery form, we
// could say |EC_FELEM| is always in Montgomery form. If we routed the rest of
// simple.c to |EC_METHOD|, we could give |EC_POINT| an |EC_METHOD|-specific
// representation and say |EC_FELEM| is purely a |EC_GFp_mont_method| type.
@@ -578,7 +578,7 @@
// has_order is one if |generator| and |order| have been initialized.
int has_order;
- // field_greater_than_order is one if |field| is greate than |order| and zero
+ // field_greater_than_order is one if |field| is greater than |order| and zero
// otherwise.
int field_greater_than_order;
diff --git a/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt b/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt
index 03975c8..2509ebb 100644
--- a/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt
+++ b/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt
@@ -2435,7 +2435,7 @@
# The following tests are intended to stress the final comparison in ECDSA.
# ECDSA verification computes some curve point (x, y), picking the fully-reduced
-# representive of x mod p, and checking that x mod n is r. (n is the order of
+# representative of x mod p, and checking that x mod n is r. (n is the order of
# the group and p defines the underlying prime field.)
#
# This makes the computation sensitive to values near n and p, and which of n or
diff --git a/crypto/fipsmodule/mldsa/mldsa.cc.inc b/crypto/fipsmodule/mldsa/mldsa.cc.inc
index 6904e59..2eb3247 100644
--- a/crypto/fipsmodule/mldsa/mldsa.cc.inc
+++ b/crypto/fipsmodule/mldsa/mldsa.cc.inc
@@ -1191,7 +1191,7 @@
uint32_t t1 = block[i] >> 4;
// FIPS 204, Algorithm 15 (`CoefFromHalfByte`). Although both the input
// and output here are secret, it is OK to leak when we rejected a byte.
- // Individual bytes of the SHAKE-256 stream are (indistiguishable from)
+ // Individual bytes of the SHAKE-256 stream are (indistinguishable from)
// independent of each other and the original seed, so leaking information
// about the rejected bytes does not reveal the input or output.
uint32_t v;
diff --git a/crypto/fipsmodule/mlkem/mlkem.cc.inc b/crypto/fipsmodule/mlkem/mlkem.cc.inc
index 017cf90..136a58d 100644
--- a/crypto/fipsmodule/mlkem/mlkem.cc.inc
+++ b/crypto/fipsmodule/mlkem/mlkem.cc.inc
@@ -301,7 +301,7 @@
// the 2*ith and (2*i+1)th entries of the scalar as elements of GF(3329)[X]/(X^2
// - 17^(2*bitreverse(i)+1)) The value of 17^(2*bitreverse(i)+1) mod 3329 is
// stored in the precomputed |kModRoots| table. Note that our Barrett transform
-// only allows us to multipy two reduced numbers together, so we need some
+// only allows us to multiply two reduced numbers together, so we need some
// intermediate reduction steps, even if an uint64_t could hold 3 multiplied
// numbers.
void scalar_mult(scalar *out, const scalar *lhs, const scalar *rhs) {
diff --git a/crypto/fipsmodule/rsa/rsa_impl.cc.inc b/crypto/fipsmodule/rsa/rsa_impl.cc.inc
index 11b1494..cd302b1 100644
--- a/crypto/fipsmodule/rsa/rsa_impl.cc.inc
+++ b/crypto/fipsmodule/rsa/rsa_impl.cc.inc
@@ -691,7 +691,7 @@
// I * R mod p here and save a reduction per prime. But this would require
// changing the RSAZ code and may not be worth it. Note that the RSAZ code
// uses a different radix, so it uses R' = 2^1044. There we'd actually want
- // R^2 * R', and would futher benefit from a precomputed R'^2. It currently
+ // R^2 * R', and would further benefit from a precomputed R'^2. It currently
// converts |mont_p->RR| to R'^2.
return 1;
}
diff --git a/crypto/fipsmodule/service_indicator/internal.h b/crypto/fipsmodule/service_indicator/internal.h
index 8495138..ea58e64 100644
--- a/crypto/fipsmodule/service_indicator/internal.h
+++ b/crypto/fipsmodule/service_indicator/internal.h
@@ -27,7 +27,7 @@
// |FIPS_service_indicator_before_call| is intended to be called immediately
// before an approved service, while |FIPS_service_indicator_after_call| should
// be called immediately after. If the values returned from these two functions
-// are not equal, this means that the service called inbetween is deemed to be
+// are not equal, this means that the service called in between is deemed to be
// approved. If the values are still the same, this means the counter has not
// been incremented, and the service called is not approved for FIPS.
//
diff --git a/crypto/fipsmodule/sha/sha1.cc.inc b/crypto/fipsmodule/sha/sha1.cc.inc
index 16d4f99..54e518c 100644
--- a/crypto/fipsmodule/sha/sha1.cc.inc
+++ b/crypto/fipsmodule/sha/sha1.cc.inc
@@ -184,7 +184,7 @@
#endif
/* Originally X was an array. As it's automatic it's natural
- * to expect RISC compiler to accomodate at least part of it in
+ * to expect RISC compiler to accommodate at least part of it in
* the register bank, isn't it? Unfortunately not all compilers
* "find" this expectation reasonable:-( On order to make such
* compilers generate better code I replace X[] with a bunch of
diff --git a/crypto/hrss/hrss.cc b/crypto/hrss/hrss.cc
index 7451290..ee4423c 100644
--- a/crypto/hrss/hrss.cc
+++ b/crypto/hrss/hrss.cc
@@ -1637,7 +1637,7 @@
return 0;
}
- // Set the final coefficient as specifed in [HRSSNIST] 1.9.2 step 6.
+ // Set the final coefficient as specified in [HRSSNIST] 1.9.2 step 6.
uint32_t sum = 0;
for (size_t i = 0; i < N - 1; i++) {
sum += out->v[i];
diff --git a/crypto/kyber/kyber.cc b/crypto/kyber/kyber.cc
index bc67ae1..bcd52ab 100644
--- a/crypto/kyber/kyber.cc
+++ b/crypto/kyber/kyber.cc
@@ -244,7 +244,7 @@
// the 2*ith and (2*i+1)th entries of the scalar as elements of GF(3329)[X]/(X^2
// - 17^(2*bitreverse(i)+1)) The value of 17^(2*bitreverse(i)+1) mod 3329 is
// stored in the precomputed |kModRoots| table. Note that our Barrett transform
-// only allows us to multipy two reduced numbers together, so we need some
+// only allows us to multiply two reduced numbers together, so we need some
// intermediate reduction steps, even if an uint64_t could hold 3 multiplied
// numbers.
static void scalar_mult(scalar *out, const scalar *lhs, const scalar *rhs) {
diff --git a/crypto/mlkem/mlkem1024_decap_tests.txt b/crypto/mlkem/mlkem1024_decap_tests.txt
index b4b06e0..e4dcfe2 100644
--- a/crypto/mlkem/mlkem1024_decap_tests.txt
+++ b/crypto/mlkem/mlkem1024_decap_tests.txt
@@ -1768,61 +1768,61 @@
result: pass
shared_secret: 8918cd0c3eabdb8267e24b79272ab6b67c9ea6418cab15e2e3070f6c747b4dc4
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 00208080e8b3938b09aab715a0b7a09314c3d2aa03e900528a209c655886bf0180a0775a1ee133e543c17d7c24407131f0b813a9287c5c9939d43ba2c1f064015c1babc910d1024bfb46a3fbb1ae13dc5d8bb4576787a592495786a53d4c172cbd3b2cac6a2f5ab68fcfeb2a67a997d809800615c043e4bcc0985de9d671e6e0c8b071a20264c457c13b1f4734f234142e86c23170821d068210b29358694d8ff27e89c59264a315b6591d97d90ede633b68fbc36ca96b823a4bc66144b541cc118b0d60a66c89124d9080ae30f44b9f4793cfac65ab8b8cd65ac81cd95de566ca2c19906a955a04047052a699e8a132e2e48aab916278c49ccd1ca0076b5254784a23f7a8c164229bdb9b46e1c7bd4c74639053cad5226c598918687fbc50323f086238366c4ad9172346626b54ce142053de67ce8867cf599587d0a47aff0a7fc113140c18c40bb31e2340822cac294aeb3a02652b424ac9f1008a592ccf70170246e689edeab03dc0249ba59fcc6477fb668038443bf9a743255310df11b4c90a97bd212a74d5142bc6461a135ce7376995372a1bf919e3db20f22c683f488395a95e31ab13aa707c59f22e85d892830bb550395633f6c87df28401865106b5cffb75729391767522ac236072250c6f4dda196a90bbdfa183113c5fe2e31ba1187b4f682399f3c6c0288977904ab445c0c1b9caca030aa639b35029657c1608e3a654cbc39f8f096414d278059a6f56c8c838b1879b00ceff668190213eb15184a57706bd8c9111667f52a656d161bcb5e7cb8ef5beb6756371ba4297397eb6d0c850aac1e01025001b71a874a25e3ac16450228dc33691b3112de319f69ac29f2a1cdf02a0cd77319931003910331a6268f42669f4a90e79bb820e5c98aa252dcbd056318a050ab71f5d60028fc41594688cea4a95b32529c39c582ae828016644faf4b7b1fa6fd9c305807c43dbba54d44273669bcf956c197ea3462a30be3aabb1a6654dc4a72bbae53982ebb986e249d9438d66b65fa15b723267ce1fc1200bc26656d7c4e1839e02927a96304460a34a9c0a22ccf15c7390afed4a612ef236f9d00c22d04cc1dc362c08afd0a16536985f69f6a15d6585c410ac7a39599c683b9e67a33ee299a5000c7e4acde611bd6c817b1aeb1373835a245b916620be6ce8093f88635cfb619a963c99785cc5c354e5d025f954071e380876408fc5ac7fbbeb4c532b1f1be67ebfacac4cf907be9485c6da8da380809ee102af0c98beebb088c13d29830e7fca4dab8c1e8cc87a3b4198c50686c82626c41414d50878f403c10ac905f39a901405b93366a575338ed7d66c0a27c9dbc4af2d217688dc3909db8878000af307a989234174363f3cc35c25a42d7361ccadeca25a484a01967be2a65bf4998d57943759528d54e498ab18514a5665b87c98339c3fc01baaa2953abc1aba78778b26d54bdb2ab69dd705d6953dea404adf8c82d29b932e144f48a2661dc2129e6a2a1bc5242552374a504e0d135e6cfc9fb91a492e443c608c6e5342361aa8205ac744ecf974b667a6528938b6085492298e97ea827d5a4274ca359a1811c71a574dc986f4262b2e29256c4b52c9a22c3f168988ccca62e0b7d8cc8d1d861dd052bd9bb622cd8b769551c2307c82aedc92accc3d2c67c3ecf8341290af6c93a295fc027895809a081aaaf3cd0131174c8605c7fc29ece47036866f7fc326f7c947f70852356410e22700b5480897f288dba24c494685ecfbb624bc189dca10d9307595969145b21ef4ca1c435b3d39555434e133f8ec8c00dc49f02788041a6deae40ad5c9a3198804fde6230dc25b7f86a86bc00b43da73b5b40e3943096fa4540a019817881b4421961e293250056300e273f3d87153765ec237a79a16ba89a960fe42aa887c65fae65719766c44b2b8a0e54e97aab5febb1c194939e11928258cbcad6281cd37ad6033b1c9982df721200e36cb70326403422519f3afc3451af15969c2b26957c452fb136db18357516617892214c758cd9b556a827434c9510a5f6094bd32c8633966eb113f9e4902b6306c87732b96542979159ab49a170fe71a23093c1aca70202287d8288fc2f56072ec7aefa293015b6a58a2899ed79d4a09701ba42d26c599d8a2164204563fb90ff7372e9d76798256925e67ccd5ccac6d69a85343825b6a20793095e1a29d1b526e183611bad90cf6440bd3e79f847c6b912aa1919a9e7d9357b414cfccb206180067469b294b2c4233960a40e17800ab0ce483c40b653392488df837689fd72da0daae74575da747527b2a116984b2adccba04000ab72402f09c749341be42c79a5c8198488124fe750f66b82cf272826747c68a946d2629a48ce0a777b4a9673ba9c3a2a402305506f4b65b65b327e62de16c696bca3d0b8ca44013cc88d9444a83549af17a3f8270565359b168ca721027479a6e60a28f11b33d88da4faa084b576ba5bea09c2fa8a68c0aa8a309c96119aa52443bae570abbd942d193cc8ccab6e5643d0e362049f1ad00f98d173849afb1248ee2a67873950ec849e9b7042b94222b60bd50720b94d7317053cc86758cfc0bae9c9856c0c4411e74730fb65d8b7b838426123bf68b9804473469c6d8717dff450fcfa208b8f53e2cd8987919a5defbcda5a422ed82b495c67b46264106a613ec138097f05a2f2c5efc2076b9e2475ee162a5e7242cea1598088f8146bc8ea65909723fb7a60b1db157a4f43158457d2d157a1f980925a396401450b670728b2c7ca3aba3e7d4b4fd34b24caa87d45846bc2104e95a1d9a5676b734736fb00f7b3241160c2299b50e5517bd4faa859b79c8590c4322115a7c724f0767c056620bd006c01b5b87d80091bc483e5d341d14149095045d0648acabb46053e78c84045a9606bf82f6124fa9a8a9104ebaa734e3720eb6921553e353e66152f2e96adf34534a06aeeb677fc4f901bea148d28411f1f856b4d2cd261526e3a8139788796690413a50251dc1763703a42ee708f932cdeb9b7ecfb2c7d99002bb93cc248a133b9a4c8e910a045669ef5bc75113ce12f7963d665d6662246d383767f74317dbaaa3d0b855bb0274815442f0b66821cda6aab15672192d20c6aa8537432699ca8a22392a855323ad70f75979b56b392c29caf9c072885710c33967120aeef0bcfca1293df8181ce50dae21577701b1fa216dadf19fee4c35e0d435ffc83de3f92c2b276461b66398c75c98d92628b32a2ac3b571853c4a142bd5e81a8770c9d9359c91ac41aa2b4b063a9bcaf4592cb6626c213bc89c6eee3b75c59a21d6d748825b336f4052c6bb79f4ea13f51b672d1abb32887f1977505a75c13f0b66db14b56956050550ab0d85a814640dd3a36a825682c9cc6d6f13cf132780f5fcce87355007f9021ab5a5a3a69369c7876a5158654bc9f9400a1de60e71e34a370372f24cbc84166ee68b6433b6911a76bd78fa249e850bab6aa96ad820e0dcb438fbcfd9ea81f5f3c0d5d53653ba288815029202807aebb27402660e4b3cdb609bb7145dbc055fa146466b121e673359a8465073d99b63e799cafca95733938dfc2ad7d6007a36a8da027ad396618f1647b1287094737fe518b779f238b1ec0c9351b3c408b8f66b27f5262693826b24842a9153a9d205a7593665fc172c7c835354daaf90574686a8ca7fe5824ab94f29d6a5ac87cc40b999e5e7ade2744e1fe7048e38c804472579d93309986c28962b06e80d0952ab10d1cf1d945b99432ef5074dea9c6f4ed97959fc904e23a3834cc30de35f5350656d027a1e6620925a6840a337d14a82dd524c2077302fd6b72e97a959001d3d81768ccb7937f4aa07f00eef0aaeca877999e5598d30a81e920e2e8489970a31fdeb7d921474500835a01530e0177a44852cba38c3b0c297a0c5bc73db986d24cb0b323402d5355b543468f948976284dbcaa1c87c8b27cc62ce2b8306da3a5e08b0991403e7b0381adb0c897c7a994997a69ac1f5092f8edc480e77a82ae9bdedc724883b5eb3da56648979fd2337fb42aed861859aa6165a800d4c9b964e70195927359378073a84b80219613873a164324a04144c4a5b551937c23ac75e3a664a773966b512a01f3a7a60ec1ee06a068933a8ab0844511488f058b2c5bbc1c8dc07e32b267aeac8285543300bc66f8514ed6aac59cbb9be835b3ec68987a5cff5791643c60841da8c172c1ffc07110c77a43ab34621c474a60a385d153d79831922638740657030481146ca6843f6043cec1de4b0b307c52b288b98905b918bf3af0e698b4ea261db5895f7d02ea0fc59156090609764d09b4a7ed5000000000000000000000000000000000000000000000000000000ab115291ae8961b14e3b7681e82897a566fae64d7340c19370d028ed1b71881f11536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2
ciphertext: 02c49972f757b82c1f5e7ff048b375cf05adac485075ca5a1eeadb615de1306d6712f0cfc452db395c57039fec57708d0a35b7bb238d1e4fd58301473cc4737d72ceab2b097d513ccd17a7f54d1fd145bc28aeaefd2157f2a8dbea391cffecfc2e1fb86c909b45e97a39b30ff59f176b2359a92cab56cf8d04ca42a08c70051c8d9405fa9aa2aaf5724d8b2a00528b7818671af4129c527bffa74702f02172bf51cb8e5b7c07438c785329807bd022fcb5aad5286642b1fbaf976af9816d3f0a3fdb79c2787f6abc1dd20fbb2995bc2a4b2408f5900c68a60f38f78037c3ddee01a3861433a7d9eeb5e7a41a56d2b2a11615d8ef8751d19cf7bc5e5e46b0944dfa61cee6dc16c490f5c7b62ebb6bd9bdca7dee23c3bf1529a4bf40977b307e945efb6451d4ae1c1aa507e30f653ef476c64610edb39201492434dcf36053f668b43746cda8fefd4316425c92f97e1900c62a91004405349c69497438aeecb876ab534220a4563138ceeb3d4edb0d70330ad031aa82dd62e19d17f62bf83dc3d4e2c3850d47efd50edbab06c9661d1ef274e856d8ae58564909625de2acf771334ffc3a3d7a0b1a382e8a17c1a1dc0f29401d9a3dd198a4ad70a740700301da40b468fc4232ae841489a1169170d5131d9b0a036149eedc23f2abba55883ffbfe4788c887e3248bc1de1b3677f286f1269d110d574d01199524d93263517afb76759bcc2728ac595b004508946618b55b0ca734431e85496f07e153f9707d876b6342cc99be864d9d603c645bb9731890d497d85d955e2d80e2e660c93968873eeca1a51157ceca558c0544040db61fb4ac4e20effdccdf950feb214971dde984cff17a75973b8d3a8cd27c92a8686fb93564def326e3cb617411892469be218d663a009c37e2d573b59beb4c5f62206f3a0df818608583e73d12366fcb1d685650d72ca4f533b928c0b4772ae645f0b0ad71bb8313a601723b8f90ffcc53dfcda9d092f8931ef168ca2f53d4600677833b9443fdc05db07f80c03bcf6e364fd4d85c89fab6a08cc9399b10afcb908cc4b6b6a3f6a4725bcf8de94e6515345e333a8324765ca69ddf9c61539d36c67e91ced0396ab2adc022ae9fa8e41d5a00168cd8c9ad0291f653af63e67b90ff2d448fdbb058702c551d323f5916ed90f6b87e354944e167887c5ea4b37703c8b0a94edf20d188ea989999deafe0a6de995434275b18d17a33b100032f2796749a385d972542dbc9989311068e84f3629bbb797f7c6f1057d99185009b5ac0d43d7b944b2e5f528cdb26ca14d995671e72eb725bf2de60289da1f06d78b137a79ebfb75425446c20b4310700053cf3ad58ce01cfb4d97325a27e5b5eda3cfe1009cdd186313ec3d16f005be47c8f38051cf2108b85ec43aa0d527b8d3bdae4e0a7a711c6fa69998bc26a9a8d2f7433f24f79c0dfc74a56083b42de7860b22c45f0c6e31422080c7a21c8d672fba60ce7652a90a3134f54594eb0fafe5a953e4f179ab06ea6b9795bc31a4f6a7f18bd5f1800a5263c48da4ad48ceca613fadea7741dff9d90f6400aa31519bef0b01e3312a5042ac35362df5e61c8e04eb52bf5bce0505ea7233b516321a08185fbdb9ff8434b4c6a88f880f594d100f46924a26f468c754d6af07f4868cbd7aff2caa53e5146df4afde9f7753484fa8be36baf89ebd4741b7260ff1ea398d59e503f5fd6c5c543ae1d318dc1894a48025c76e872fdc3026bf33a91b4618d1618554393eef6f7816b7de65c4bfbb55353cef9a53ad35340049ec65ad5af27db6fa597eae6499a3e5a192ed731915f6ffac811e35555ba5ffcb6628f812bf71a268620c161fe2a571921f5bceb4d0cdca776c7e52f68140845f455d247cad416c4de040bc37f5421e2b8bd6a049db84f0b3c807c3bb9d47cc7ac3ae9599ce82cebce8243306c0f3de6af1526475387c76751b7412a227571450599120570cf3cda19264136e0a93b4d25a160dee03d3d812dbf172618f58d09645becacb5c287b3b01ce4d1121272747648c50112c44728f66d86bd421390f2b36ed7e18b09a985a306ec52f240c0bc0957335483439f146b6c340f7e062a6059b1d47750c11cda575f8a2aea78ee09af0e06dbc2b2ac2b2bbef17fa108681dc90a7b970306522e521aa987e3ab6dfe2e1b3c6d9fa68897efc9e998afe55620cdbe9ddbbac8a0e22395d5628a
result: pass
shared_secret: 6e63c5ca8af98628c02c8f1d520615a1a2c4824d5d155a6e51d181e8eb44c7fa
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: c5f6c739c640b093956cfb9d54272b3c704d3b364ff1c68510b875c8c29f30051b5f60b53f6341082252746b8d4eb52b3f77c818d42ac776ad393072d458a28b186da2b61cf64bc6d8b424afb49a3b2528d4863c876aac69b7c7fa95314dd36ab5f021ba8c575ca458c469409b71b31f3a8e371937405067951c084b6a832ab321642c82f33395b0701e5a677c3c783a47d7a6e474af454c1b31b174ce5285e90608e1932493e44bf48b921d6a58b1b86ec2a38b8ba2a1fe884c0fd608af3986270391d1a42843637d75194722d31bc81b2b507ccc0fdb309e59549a874d09239bec5a41c4e9bb48d6968152ac9d431cc3b290371296b8056ed56898b272b948e556926478291cb0eb1bac50b6718e98b74a1777e685b7b6d7cd6b22bb5846c69149b4e7b292a4153763b768cd5a67b65c3d059464ccc123ac086f9f41c3395a56ff3152fe149d76ac2fee2079653326bdd82dd6f66b6687a7fbe00d9832b09135756c5819b1f66dc44c7b32c2496f63cf077ab51b8626d0918030134b8384c565f0715167b21fab697e84c6838a71176748f12334078c27dda3133bd44abd69bf631badb5f2664f2857c033102ce8284e4b2beb9095cbb40587bbbf457054f4d11bf938af207c1cdc5217b0e9797bf9ac88f3943873c8b66883d2ba5ec7e6696d50a69ba55457853bc526819f1a6fe09973fbd19832312b554653b8441e5eb01884e94a355732e3da645eb849f520bb2bb4327d560612852152f8cba2f77db8d21922da08e60bb9e3b39b9b85bbeb9b1715982d292b8f1017cd3e60447278cc0257898575a0eab1408122bb3fba17b62a31902a567a0821d42086aa6417c259a1dbc93b25003fcdec9f6a5507b4b732a43c444c5825a05119cd089fb2e569f70b4d5e6919faf15d6eea641f5a2875763f42b3991f7c89fe473cc057c148ac58b6c88dce537da8632c10ac851f8916fb7b6ce89ba5053b8d95d29ea5d36c91981042c4aa1330aa098a6ab256ade08592a05c95021606adea0ab637824214009c2b915be450a1f7434ea2c7f562a4fe21139c2652ca8785af3208f4927abae698dd435e90e7474556af9b907f6d73c4ee64897dc74c6a876eba1b598e784b8094232dc62bf1119ef764bd1a3bb2d4fc7de069273a223abe5269a1403873087906db164b58435ef41d7d78b36087062419123c8b1d54da918f34920d3302ddaa300797b32c1c81b82798e421ab2589964334714a75cc84548031d5810fd87890a1932c98bad37c860bb15663cc0e91880af1947b8a26be9183b648b714f763b81652786682c210301852776aa673a1fde470afb56eb0b0114895638c609d8d55585d68c165f7aad64c1406a165788c3364667f0a3c65aa300fc4585e959abbc5e1b316aa108a1cbf703965a74475147a2d323b7295d185571000e43b9120b76fb0105ee7a385965026e8f8309d4badef88b433a59090f88bc4eb4ee2f6c1f0d880057b477e628bc35b023a4c9ab682822556afeb32b6c9088e35c107e2a43506c43a986a0420f5164167519c4029b47bc81e93c1ec149e6083b13589bd2a9c64fc6247ec323b8cb73cb9f9ccfb8bcf25617a87a3c2d8b5158ac8661dfc789e92cc8cb39ba3237b6f13c80ef947630578d2d213f1914f94c61429bcaea77c646f1b99d35ac8009907ccf604c1211ddaeccc2f1001b49776df94560e5ac35e0a7ee3f39377e252d83558d6e57651b0b3c0365e6a133dbe3002270a0bfdc524e5d298b42c1408e17d155c82d69c256f78a69937843491153ec2117ac40370934d28783a69d0a02526afaa8600d289c27e9481cb737cdc4b9ddf53caf313b3c4b862b08045dc38428b126622d77ff3864fa93919427b049786042d234429e9858ce7b1d57a2fe92979851b9d4ca23fa7a80aa4738c9b777020b857b8fa2e442522423608d51b78c574569b9746e441bed403ac21391fe327818dc81355bcb2f5758320965e10946cda9a7c1d329f7c1720857c8751e57b87186e8dc21199e3b7ffc1c4c5607cc3c258a30163131c5db5d96e2e8c2f209419d5a03dfc618a53b1799cf102348b89ba289fab2b206f61688fd974023619fa5187b8cb28be778b666294bf029d7fa9abe3ea739f131930a13629bb6fa7221a788591f595911d3c8a6625a0452bab83196c047889f7eb13897b3d73db6ecf5c9687c3a97d5b3fca3071a29cb82902c7a4e673f56842129c4e27254d50c2a9741abedcd925a62796d9a98733262e45366a5d7b81cf7c9b3c42a6b2f70626d0adde9311239061dd893669404058da8d209ba6a6825e796c84e765b348414447246f57acad8c933dcaf752ef268bd6246f6b57377cf82607a522dd7028b572319263c9a9805aa6501ca4ec2a182a25cb751ad6f0a0a23955986155e0a1b0957bb9afb35320da2b20e29210b2605122791db13adb91a0fed0b36bca7d6f03b0ca6c8597b56a189c10ee887b4429b0cda99d83728aa6f57a03d182685b2266ac1f70645b123c0ddf352520332fb5ea06e716b010f82c62858c0408446afb0ffe23ae9241be953b3d05a9087f8738143c3c66b5b3c61ba1240b99c2f50b620038d775706aa58cb0f7094d52c755b992e008c2419b3b4bd85a41f65bf633136867caf5872d551340f377c06546495b8882e4e14df8a958a501161c547146fa2132160fce98c830a5b42784cfec7410bfe87f185657a29508bf339c7871ab9de91423d23e90ca2bdddbacf7f4af0f616e9626a3ed4a87b9b900b2412b0b5328104479d33046f54a06cd88a3d0c9780af5807e3517e0c72d45b17106a136e68a49521364e8661636f250fb679d3fb649a0491d349a6bcb49a4e06552ec60b33f947e37fa11b6742ca9119f0c6953f8175deac4576292165f42110c99467b008f53e25308e560fc845df84b28eff321687c45d6d09d96533f1d0078af998a9db59cc51b1ed4ec6c13695fd33a768af521bc9c39bbf6c27c6266ba271e5d8cb89982077f553b1dfb5341b5caccb856a7608cfee57ad3dcbd782ababf70c4f825cbe1279b304c2cf134beb0268655951cd76079b06410737cc10550c16cb9848612b6b7652d4ca9bb5be64f08236b69a097cbd10014e561469b7a68723160d91632d67f4908622876a29c59682579b34a298cd01597887c1b4d100ea724ba3fc8960356b499825c5223585024a478d34561a98d0c23930473ad6da637666b454c7882f0a98254f41caee03e03067b3a001f303c651489c1d00a825537c2412826a73959f085c5d6a836836582d938b9d999b591019219c906f6712fdb52b13bb8708d0c570a00bc40f1168b80b9c11a4e72430943c2544e2bb910ca5c4f0b245f4bccf0f0c3a284757bc6c535c6a205b34cddc15abcd92dcee9717b413568b461e2b9035756a312414e2644422112b49a3a23eed98e07884c80a6291df38d5bb039df15b7d89b5021d691f1a165eab9242b34146f6b223195bff19c6c6197a5e424c59572502f69c7a8b633534786e4d8c1e280680361b8ab5657b74336d72571bcd12af7089d4a23c09a167d0a3bcc540b8be036b24664bdb3a13b62c11eee93c4ff5bc0bcd92f186741eaf56a5f6111f161b9158bae9691b8c99cbae21c9534da07d11930b96751e3c29a804195a18781e016b6af45bd23e8297759a1d1487c6212add88675cc3b92de46c09b4315c9a0cf6a5a20e7fa9ed5d594aa95cfa3681e42a3543429b9ec551e1e74ba46b79234b8c69c0b5f9553aa12455edd971ac29199c04a40d702128cb77f63d50f11184d2d0b66befa6adf7c2bed427c82a632a81497c3831e38256784802fb7195e40b571c26a925de84f6366b3d9aa2ecbe57ac61283f5ea3648b652f0c742b9d7c2a8c00ab5b611fd36458ec71f1c49579f96c1a774a3b4179ea63b4fd1e3b172b39eed1bbbf0d27aabd1befa0232440b336b53230bd60b88da4c116ac47b971de59a214a0752e75888172386ab2ba525ea50492a59467a57713985475108501cce687bca50b6c8840b03bf2a5072e8585f33625a9a8c17160fd7d630ba54c2dce9bc0ab2cae4965ddb9110ad612c65c8203e7b462ff86ba28abedb808f70818f022413ed5a9a3b0ba6aa24685fa91d5938a69693862e31aef5054af2f9849d3b1d22e121fec251c8f358a0d320efb9299df6194cf6cc5cf0c11363114abb8069e57634ba173ae199b080c1d935558c16696c97a5f316a4b8565c20b266802c60d4272e49c2a5ff794bbc914240f81317558a8cc862d9783630d90d99f6a68738219c44b9ad5c07b7242e85d71f2a958398e25047f494e7f6acfe339f98cc2d65c114a537b1259e000000000000000000000000000000000000000000000000000000db721a7dfb02556d4951dc5f3410ec6a5b8b78df5ec7b511533cae60713fb9dc2e8541047591efe1847559704339d0ddba611d0ff8017cdc84e61184715c93e2
ciphertext: 841dcaa46434e75228b0bc10733771ae67fdcbef99433463b2aaf2da88a98e1bbc748e1d14239a3a91bd2b6752b83302265c58d36f176b15988a3cdcc0f65cd72eb5486913269eb31b42bd0ccec456b72ff18f3801a1ad44c3ae6eebfaca59f2ee8308bd6c4c05a7262a01f168662dd42153bcf885ca7e84adfbaf6429bfacfde0ba36426b17dec09cee0591eca54dce505b6f23d2b674fba0a9dffdf7e77ee007e7570b31c71723047c3e8a271d6876261fc1766e1e468bbaec2a42960c2f0a3ebb7dc5d5d6d75a24245a375d160bfafb01cfa2c08831b1ccc67bf9d05df3a14d8f4b170e145311a793a92b1d59602e45328e58c5842dfa6d7021e1c65a900e0b04a79b17edec62c5d1c2bb8679174b45da0cfa336f7a0973923b8812d7b2015e73c42e1219900cfc3cdc93824b55724acaff2158d38732c429883b4d461b74a858cd167ba9e47f8157834f2e758cfc1c8f0fc5e762d56ead723cac0759cfe5233473b9706be8d909c1bfb2cdecbe7eb15b74b181e8fb949aba6b82e2c7c1d40bfc43cdc758051d1ad428a43bc7708ea9b46ea3f202974abf44644c7614769c9fb39de6ba9fb3009cff125fae0ebf0ecf5c9dea4ef2b9a8f26fc5d27d875e068ce3d319f816000f1dd560d03cccf97c5485ce65a77a326ed0fb2ece5cd5a55661c7b41f4b08486770cdc510f03b2b85c73b95d0d77b0aa75f677682d0a383a6e69ece0d5bd62568f2f50dd64ce3cd9e51556043323729b165e4c6726dc77c78025faef0653e54c6474834b9e2b51c66bfc8fe90e6e48fa217add307120ee0c00e8ac8988e5765e66dd0dfd92c80a3b19eaefb46585f0078f5f2de0b9c83ee10996b27b7c64d0f7b4d3be78ae18030bcd792e83bbf99529d1e7917bc053846268ded779a622e83f5d2fcfb0c15bdb1a2621188037acb8999ccae846ab2664792b043903c3e6b59c2645ca44e2b19cb21122035f7f3b222bf382800df1d1d8926eada144f880ecc739bb5644986f0a3c1b7cabcf3c9cbc7938802274ba459c1b870ddc516b5ea871fa6bd87b8cc5e47541f1dab3b9fd63865bb514b85155c41780b6ae24a02a06804a319d3f8d81383e7c8167853f3e24b35e220c105dfe14c33441f928c6dcf63a606500539b602f3b3f547a49545fa43f3fa6bbbd6049d9769ae5ac0964d00d68409abac87369f9608f2d244935aefce11e009fdc9a94c4a803eff45f989affe68c4dabbb291de0e7251a82bd5e5d19bc165fafa25465066e23dd905dd456e0d02ec3cf229c330d404b5f214a37363bd997979fd171584a296cab6e37928940f6bde0d1ed593903d86524449ad42248572680f1b573ede4ae27237e56755485657a5f542577700680308cea4a0d249e48138743017078e668e9ee556c7ef5a83cca9f96ca22beb7e30e2df1a793c6e2f402f109770ce7763eeb057f65bc0fec1fde8ccbeef1441dc98d059d1589564debb2a993ce21031c67d4d8c61ec53160be67aee11ff4b901bfd7c91f6e1faf7aa525aa8d15c3212ebdf0e3a5adc57690d446fcc9435caa5b1ed174b96d4da42851545ce1764bcae48c5fa580802eec2d1b83e4307c1da0dbb2a0fa414d2db8d6335f898fec5e391d0d7c2098e35dcd68afa8adc29d5eee9a9cc6a517ed310897e69eb23ce83e5ef0535c0f64d4f8d62a962e8af80f47a7f76cf735ae4ab09db0b806a9c4b2fa9ee493d69e73af045e6a1eb07b5bbd3241ccce8b5196080c2953cbc50a2052126ad754dc971050150d7ad4b319fd85cec8c4be05b55ddcd5ec7e804083278495b1601792464202969dbe01488f876d1655e0a3f4879ba41712c9136ba0f99d4bbf3145f34bd6f4edad036e6db0ba2532e35c6c097820d1fb069f9d69c259fb17b94970f2cc8284e5fd80f4e6070b4389bcb49ca99f207d002e44f6f0c9046fd89c0ddb1d86b01007c02920acafdf28e49d3c209e3bca054b67398b6c6c2561004c129947d87d33390d28489855074a6777dbf72816f0e1bf9488009bb0a247784c8a9b8f13a163d86a614edda8d205058071c12845b21e82ead309ede45872c379417c536ba446272ffb63d924d0055a92c320739d364e3eafcea6d10ee09a58a70c6c9a88550327070d6de72034b8140976856895147e2a1ab4ad062c7d299228a50b605872e3d20daea3e918f2dda9f8182aed61c93b4a47c5796478e182ba54c87fe
result: pass
shared_secret: d0ffac51bd8b7e6192ac5954b26a5c64f4d0ea746b08d9f73602062aa8aaf7cd
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: ea53a046a53b7e3298d588b38c403e67b5620c5c73a438ab7357660362ab3822b5e774a9dae973c83a96db79b550dc176f9b0182d37f12118bc96a4982249a352219a110704e4a0ddbe545e4f55cfc2c50d54cac33ecb6fcbb3ac2a7bd4e41282476797a3c24f4ac4f60c33da281cb1313035c9c804d755267894d867469dbfac7be52a34f55c0dc642354e52967b043a0e0167c806581b51519e04af675147578c79f492da3ac0748352c6e5c7ff462008cb42e9817155444b214c3b93ff3ae7d44b5c2b659627a833cc18ccfab4fe6d6513dfa67cec499cd7a0d052a5f9ba378bff75033e69ad053c04b74c8cd756c7cc0bd494129e069cfb4358324066415bc2a4d1cb8401867c9954aa8a33f929ca279696cd515bff0abcb6c8692aa9cc076861e2bf27ec360983f775e9f166964d0c43c380366f19d3f868a7e038752d30e389c0c057b6d93a9ae64746d5b3a146d31269b94c7a753412be68d09d820be6890e5db1ec3eab1acb14cee8a317ee7ba0eb6027f13a540b07c12cb1164bc7d295c16eef4c8d9773bd2d32ead764f58fa48abc2a5491bbe00e07965017ebf40c973343704112bc90849d219c70b028ff3769e720c4599098d172674358bcaa8947ba6b874e3d94e623122ffb3984a0b571632be1c540cc5da45ed1c57da1054abbc4456678249a2589544c3dfdb6330ab35416ca49c8046c9446150660b45e05b720722bf390e307445dd8a3e23253cbf633c8ccb098976a68e481ee86b86a32865d9caaf385842cdd071b0974e807710e2b44c598a4a36bb2af048b0fd30bb6c64a539513ed2a5a9c6cb16129cb88d6bc62389b4846a2a0afc532eeb0f055aa85ce7b43f8099cbf194e664c59e683e535ca809d40f72d4a3d5e287b5ca3880d4af1f1523b60c8f811a17b2881602ec0393d54988d63a1620a48ab25a5336b25ca25d5b21425ee54673062020f065693665c68399691748ed8c2b6ea47b89391e7dbcbb3e4bb8bc0972916aa0ee5b90292b23618c5e9a68bff8476fec1c7e382b1cddd45069263a507c44b97663a9c8b4bc690c89d25893c4caca0caa7633bc66f449bc06603fb747843b0a8ce11d46ca100b3243a8617904a2ae48db08ba24bacd5b946cc96b834491a246850c44a0f049bb3e099b3353b28c3889bd4520ce75749b745e65e6442d970e917362cafcc9cd1a6194d9ba41f29feab98320e10234c1b0fa367f7c3a420052a9ace9a0787bbc420832db814e8f86804fb74090146f899a624ee9739ed55c40b3716724b8a8164b8b976130d89e15dc24e2078f24a953b2781b7d36a12334356a6998870a0128ab5152a89ddc84aca3475f8cf849bd762ea7b23bd2d743a9d3a9a2c2ae4723b5c1a3b5349a2d4bd2907d89ab8fe80624838130697bb1d45f873a3416164f862630e96075fbc5192be26755eaa1f33026a1f201a05b6b57ccc83fe9c191b13016a921532c4558b44ff0a26c864c3102ca921c299b38199f7162938387c3598362e5f616756bb5aad68c68e0a34ce96684597712341f391ca6696538582ab0dbd532c7757b5b24b0413145395123f0c4668cd538782b0f65ecc30b687efa78183de47f53b73831210c513c54febca584a4780ea352e9dc85393457e71ca62e85abb2322aa45c4fb3d29b15d55a027b8a74186000b9a05550b2a343a3ac21b0f7a2b2aaf736a1ca49df5b61fa749266b0696ad7b6c48b0dc82803b10a4b64d6caebb33a13c60effd699ad44c1985c9e3f8ab21a0cbd728ab52e07c4bc5ab3f6c698ea307f435bb7b5545c44758fee3b9077b5a318c2b584012cc9b57560236be789bc4b026d1f26a857365b2d1a6e809a9f71e140ec56c4db3829b74539a90345841483daf6840141100c66cbe057261fc346ab8c36b03cc2b2ac838835cd373836bca05d9f57ce2231980ea1bd9908111e79b602572ab37495e9f6025269713f4318dc472d06b473268bcc7c5cb956b5a1ebf419aa18b9d6f184849240470607fdf6325ed561c270b095079734fb61e04c531be893c2621c5ba48bc897868126b995e75777c8ceb100c67556484b71404be802ded5299cc41a83b0c7a99c8d36d55f7fdb4697c446904c2420d667f5e58e0837778ea960bb6605890b8437f24f7d35acbccc41acfcbf2e35270ab36804db6353d04f4a88b97b6aa5a6a42a101a535da323cae6c7dd757de67c24fc0c1dd894ba24c26c873172bf2c1ce63c56cb98189d60587cd76c2ff70cbea93a0d0767ff347a071333986226a8812677e2b5e18a15fc5b2d23bc03786b2faf8a9d2705bcb6276d2c140509f67a123a34a98bc879386b5a596b4fe77f0caa5145d766e05834658961a4aa3d5a90bf9da5a53ddac964e62216d0a6e39934f00c6ab988cfe6334a69480bfecbc7b100b621d471ab51725008a21f404142e489cc30cb1aec8dbf99038c8989ae8c477c198cefba1f3420951b660026c820fb406d19fb0878677cbb852bf5978d99d33f6fd7c3aad87585e68e5dd5a444a8369749ac03902b91000c0d986b26029005ac6daab8b0888a75b75bb667469525a70278945e2847cfcf242b420a10af98cdcab58417400b9d58b68f3670aec0ade93996a8e16d63337444d0b7de449f3ee63b30aabc9ac2b77d5bb13d672ce9db86770b9c21e11ca3f42c2117654c657da94c451c319e1139088d008179707eccd6a47d68677c692c9bc7790a6311dfc244d1c67eeb3420109404a86ba668e24c09b6308f3b09e546cb20db4117c74b4124946735ae70ec8147bb2e24784c3b4a24eec5ba8de3269054399a623f0050b5d0c10b5f5139b0786353504216850c85677bb596b2ac6a5fd4c224bf61ced0fb031411a887066d7a5455afeb8309058485386a023b6c58b5b967557a5b291698d488a131826b958df717caf472118d96a3b6882c1e95240909886895a0f5946aad1c690b7a904121688f5685ae775738307786c5a6915baee72b3d71103a96860afd696bc70b880c019e6dc77c38e33817db195ffc2f7cc37b4a6450a2e787d2e65c55748be376af57251974ccbd8b398858971eb5ac62f7156e9f2b43d6c54a51c40c55156971804e21869933771b3ef64d16e48ec5195018425d32b56dcce1844f33600bf366b9237f6ba451fef0816d17a00542433dd7312c474f2c1abe2e3a1a12b303f9d42891b12954473f6eb41ce2014bc083732e7a4a7808831ae478bf2865934437d4874b6e5132ee99c727798aac4b99c7494fb555a594d21bc99a014001b7d06612c2b3a8c7170e99e037a2d50f33e61156c519a1a15dc78a60afd1c2c159375ed570878c319db912c1745b90321ddaa48bfb80411197b2fa146315bcaeb292714ab7576d946b3927a280319395dcc4a0c431692c7848d10a36dbaf5d78af33f62c25e5c4fb009be83a5b93e054e587393c48ac1c65a524a0cb4e6637fdd90e43346fc9a45a720898d05b4d3743a0e2e40f4cc77237e8913ac0557db49eadd7cf00c3695379b06602c332f57da6409b3b888e7c06898fc4412444c677482003c73fdf07ba45ec968591c3445b14053a8077e664b9964956fba6faa50d680352a4c8378d208940722bda766910403970e3b50d863d28400512d7adfb372052f1cfd3b24ff4e46695533449dc232a14604a08b00da1ad81e31232412e72d180826b968513a2dcc724085a3ff0d5c3a7361f861a3e02b0308b897ed9d35b14a4159cf646336ab8c0e273a6915a14297abd937afeaa3f62005a001417d91699e4166740764cee25b91fc2c44753a3bcc2a8144174cea18546fc513028018aca8cff714d6eea7515db543a192d8695b1923642228394dfb428cf167201bcbd1e217ed1e2391c616db739b09c9a0996c5bab53bb5e1bb3aa547937dfc49223897034bcfedd55599e15641bbcd1b0072e11ca24ce7a828776fd0c94bce2738eaf13075aa7340d51b30fa0caf857f1c5b7808048917e7490ab0739147b7cf229953a633f080ac80c495f5b03355bcca47a94b60e95d72a29147f2b677c6a106f905f5349933b0b7600358fb009bace2c229246aaa51a95842cee212c11a205711125c4ea14d68a833c2892e8bd265bfab3e7b16cc2d34adeac46aa6e92598d45d972577fd76a9a7b954ad1bba6ed63132a375aa29b9eaa42366e2aa8da0374a19b16389a1b36c025168584a91a4328071de904ff9162a06a8bb9b9030f4571b1166133bd11f9fb9a2214c3f838a0a6106359e778fa7f504c6e719ed9c2ac66479eb1b662c8571d7e398f80941bf2ca0b8791bfb51693fa95894f25f2ba53882e450eaeb0b3ca706a936bf22f6056588144c1c3219f0eab96c000000000000000000000000000000000000000000000000000000209ba491e8a9350c68a6cb643fe16e7cea65ea4cd099b14c90e7a0f627f502f45ea63afb095b03165e6f3b9488778fdd771036713df7b893ab8777554eb05f64
ciphertext: 8106cd6746bff4925c2620882d571c50b36b066a5ea43fa6528351d97dda7dff1d9e9ee6ddc640ddb88851844c388727c918152c41c814be39f274183e116432a61f9a7c1885f07bf118e4ba631598fa9b1e01e72a68ec43dba62235587c9b9dd1c8e806174ad612a2ffd477e8d0edc2ebaf4036393283b55144b9c83cbb31d1674565abf29a56980dc4a3803a389a20dbf78c78a907a5d651649c27c9771ef436c189d1922564397f5b5594d7efa951ba7d05962df80c49c1f73029c3d7899852d8a1fe03d1245a228028cf713f4403abc64a9093d782cd1a6dfe12a79098e07f40904ad146dbbdfa919058149b051bea097a60aa0373cf9c0803e8da99c03a6b83813f99adea8c87e6da09013947cbbbde8edc3b7ca29f3180882cb11bec706f4048a20c5938560ea83380be5cd75f48d77bf3360fc131509317dd72b9340bab91fc6bf7ce099bfa58d6c5a413fd2801a15ce7ac6f6f2c0447cba39987a37695468cd0fdc982631d9b0354205194323e74d41c54e0a026c4e67467b5595aae7c8346d1bc5538ad0acdd56fcda32f95dd7830b65b2d98c05355a3ad9c84cb43c23ef9845250888ecb6f992da17f769a13bb7bfd621571f98b42a9aaf19d0626d7d59355d9730371b29a3868b97afd7013142866e0b2f1c54841de47c47775940c58475c96a4881bc69c6de346e05f55cab15d497392fbefd2309a834c733eb3ec8df4ae65ccaf690af492e39d0b5c91d09b39966b31b47ddf6751b481966f19758dbbc373debf284640015cb197e53120e0a36ab02203e0992f35b4c8347021f8c4663c996597a466b416cf271e04a20045639635b904b63250817c29451dd2ada5f3011500f705c2f0982d236ee1cd02944e35cfc6704f0e8fa30d8d2d595340b4245d3f3d5246d368062b53f06ad365dbf12c0fe7f492690fbf3389d234e76a618e63f785af41b2f4af70be0bf0a917df6a5f34683d931604c6df9288cb9e38b8d8396ab2e21a1c9a54f4dca2a4985c3c4aaf20af5e6fdd126860df422a894dff4a857f2a8aa54c4bebb70d44a4ad15d47497be7e0b7487003ecd6f92cec84bf4c459eb5f480dc20bb6db735cfaade1ce33782aaffa6a39e4f2ce9e7df44347b91d75bbe71b824d6302608dedab325d00163cb9e0a274ce49717bd6ddf4b9c02fb6986a8f765ed565f48c10dc90f39b93aba1a69a832e41f2b0dc2113fee500c99471ab67e3ab5a1cccc0f92273739eae4747de461ca3ce6161b558577b56af9e695a978970473dc671efcddda2bbd8d15fa6eb8ec0ec9f479bd9b8d3dd4865460846733856fd57664760bbd5ed354696ce6c8b44c6ebbcb07920cb6c3cf769c005503add472c7374b8875d714d25c74e2d4390ea455e00208763f56e475b630a30875bafc70f87f541bfd0a28839d441ce567db3be7a20e2773f08ae73f9686b95623fcfa7b1b3052d64448756f9a7481b1d9c6022898e79afd4c2290a9ed2e0658c6178826ce94e0ab460798a88cc54558c51239bbcc5347d59ac87fb6580f84aae6492e1ca700093438889fd50eb7028153e8b4675fd272667fa022b17029808b88df427ac048d8b410f60a56ac39220f8b509ca93c34c7dd62934f62a7e29aa3b0918299fd5c56b3c3158775a3b3d5c78aaf2f656257fdaaaa5b7daf83294b5fc48d08922ea6f5487d647c30b1c11a30d2b1690958fd90107a0d6cc689441a36d04039bea83c447e79b04bdbcbab04427949855aa1a32790075438ca6ae6f7897581b4489ea1dbc4c025fa1ebe698959a8145e8f11aa1cb6f742d1be789cba73fdea457eb0abf1e814c931922f451a7d59514c3e2526b1378be1ba8ce317ec3fe2e3d983edb346874f5251d197ea02c7b16fef2b7ba8cd3b0179b1f935d4aa4d463bda2d5dadd6ba96c0ad630f1eff86e34dee3f2eafb9cc5f5ed13dac2149a583e2af8db3a789c39f751e645acb58743646c6f65bb12564b8f26697e80b8d9636b0833d71433a0465dd501eb313158275608390568c7130ae5f998d3819ad7f3855d26ddc9f4ec07a36d191450dd6502a28665eaf8235a3f10b90aba654c70974038cdc9b3335d9b865da8a07be70d53f6a5edc7c4a5f4b5220c8e7fc01f5740360db072a4f8d7e80246dced5c75ad642ef1b41841f43e6e422f4f9131c1b3f505197f18571b057ed1cf2dab2f37dcb88082f8d8291d13eb7abdbb14
result: pass
shared_secret: ab923efab9857dba5a68f9198c4318f54a42aec38d194133eb7f5dc172478e79
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: a7d40e120206cecb9458a1464b96c447db086780708c7435e40bafe1ab8cf26caced91b888711b8b95414e080c2be24d7a622c2e0410fb9c795a25a50554abe8b9049f9890e29531cca88e4284a5bcec559f939061b003510c8a23991cf474ba6676b0599c86dcc0976f3b61cb624954d3914bf28e109193ef1b9efdacace8574dceda34905485e1a79d51c8ba06722150d8a243d69f671c18b1c2a77c990699b72ef5b1c4aaa121a8e5a6cc971178127024166f2593893bf3b9e0db273040b0821051cab28af5196b8937538a680b39251b08051502c2a3d5504f78b767dce91e2116280c3532e9426b93d8cae3e9abc5aa4832c6bfb02a71559bb689f82c22835fb314a5e6d44bc4085eb39ab41555103033a0f4b6aabfc5246c93c07840254989301f88776c06c9f808369e18445058b4d940783d57b7d7901b0d63a6e6512b31a63ce0704028d936462c18eb4bb78accc3dc56884d9837d8632a258c4e998cc536248aacc62f7b9b65191a28a27a1cf44a0d512875ad5112e034c0adbcc67edb84eb000bf3621e7c1c5cad1cbd06f848c5d8c3601b07463b5c0e33cd260a2ec99a972c47cda74229f6292221391f37d20903aa76eb6966195acac6373a41db78b8f7515a473ba04397c2e94a26a6acd8f2cccdc572d4b60e56880fd0295152e18bc79699feb1a0b6f6c7ee19545f4124eeda5755a85d79fc2dddd2848216576e9ab4d07b7ecf77a74937cc1605602c62003dd5abaf601b55ab0cdb37bb3110290f829a742c5607ab24a50000f3191f435427b5345ef884b91811bc44fc4c6de32bdb0a73edf80c8783a5a6b6a2d06657b16104cd62ad847206ec1b87729260e91b2afde6b0f13a87025c10bafa88e1fb1a66b98a5308a2c4f10874324179a2729df786627271ac5a945072beadf878035169c543c0b07acc49241b7feb406f524b71c787ed757a3d48c233bb75d97c42e03b9973cc680169520e400b00879cf2bc9119325586719f22e1b2de163184b2c43735b2c1a8654c92138b90c458421f681136e0d6c417b20a5f8c126d3672a4073942855b127a87ce96c7e34861923b3ea9bc9f0aa277746927f0777814862b0845c3bdc12309241f387cc6f4ba4a9688b947ec8b5603ce88ccac5c35756d0031ab4a5e32f6ca97184df2acb38f724fee64a6a688c69f6b913576af98ea2487db097d7c81dbc2a29a381b2345495160c348e8207e313929dc08412304f6a01c90f6889e23b7974bbd6f081f52dba8baa716b53769e6f71b962156cd44a3f50563efb3b65741aa26e42a3720ce737c7a7ad5c875663bfe36bde03b106647ba1ef098569bc10a0940cd300d58571dd354ca5ef714733bafa4308b3c4b7528862664a8656d16c9c3837355e39072db20af20025306390ef32931e793e33333cfd893c6227215027ab7ba9cc0212ebc749abbc62be483b3e2406a5ca10d7fc534166646473c27979053928aa5445c4c1c26cde40777aca39f5a64161c322135fa176d44b694341a0d3a05de662ef0e1aced53c4ea2762c1333da3f987fac65ea63a17b55c3f681c568d648966eccd095928f2e32af2fcb0674ba3a50350e282c99af149ab1b3f52d3b9f838b1aa8cc5dc9ba816e19d8a177de33a855960b7c464cfd51a7279a48c80091ec357b9fd118e12f00736036fa8268079754a4d565773f2a5d5c913109a4606a276d07372eb96474c7722d85a17a50a956b3ca8132415b2c404a0288aadb44fbb00217c0005ee36137768c3d4169d300ab2876c1b2a92c0cf119fef5018bf7acfd2031929b9671898c64388898fb74a483a100ce2ae67275e53b00d94c2888f831a286631450308aea2580fc5cdbae53b7108a9d3cba88a437a5c0917dfa3bd7fb2266f2b2f57f52724b67e58cc2781a95191f60a34d74199102b5fe941874a4433034ae6c9aff9e2bf16f01781d72424508835e3a587903eefeb0b0d218e11183cc7293c81c09cb5fc4eaba4cdf22284206b23b87566da704665527c6c587aa3070b01e79094747a87ebb2b9e5296a2405528c224ef45ee6fcaf0c537fa2e2479d579d71a3400793188d895323f274077416f94c4e68811ad9c73598d7ccd53bcd18f8b1cca8bb5591298132258f4210d36722217c2fc5925330d03d1c037cc7d520f52b7761e61727c66c5cdab43ea53041e25b36b56a323a12f70c99eea25fb4d387c1aa2d871244021a45ab27a0709583e0c8652db31167da21ca46b84002ab009a8659656876a037e844b6c027545cc66d783713a79b1bb5021e7a2c5deaa900e595503cb1bfc394cf65707c78a97ee522be49c2c08de89336b4b50270ce189bc81fb6a464a853262791c748714aea70e79a6967e62566492157b4bff737804b014c69f41eedeb07e47cac957b4ca937cf4c907189606a9187c700a7b6756c5694b285ea6171625038f1c729a7897e5cf853aae66104fa1e6c66b86b643b1e37838f85bea35132a4176afefb2e6254433af76d5eb455b11a0624fcb63f7310b0c9b171d62134fcc361c2a58b12b2c53530fb658b83107e76006e43ca74d9093fe0ec4127f5866c306b791b5d033cc834652e6ba485efc76b5289304b3c774e88ce0173012e0203eda7a71eea170517114ef93f739501c6f9c9a4d56b77494f82c06753a996f33721a56a003167bc773c44d685a2aa45b61744058a1a097a14299d7a5257e27f8efa796776249878854f458d7e4b70db914e888567e5aa9cf238ac4187bd783570daa77c3a9854c11c80bee12374267da446cb1a3b5177c112a3945a92596093f77c3ea9bc2f95452b89879bb6c0028b653cb6c804d2680da39cb99233067c7b9124a27c4c6558a641718588709ac86d5c57ac7a1f1aac68c9c027cd2c0433a139f17b2972a5a81fc8763ad92391e818a8b77c43fa7e71930ab5934d58301c723825f9079ee9ebcc8096a1c4eaabfb5b73f070b43c3112af289c09d908fb8a2ab48786db29c2dfa82a16c6c8a8b34f83583a6fe3a630b639631742adc422a71798974727e2a80b139872df5420c60954a453633bb99dd40098be6952930cb35cda52a33c4728eb31fc7048ee5176ce947b194885395163af5aa5f2f53fe8c9246bf6143d199d2a797dd62b0fe67042fd455acebaaab2bb61ff778ffdac5edaf8778879c5517911a468a583286bb4d11a7f852ce921cec823647226c96110063d02a2708364e585c5ddb3914a27123a8c6ac89c6f98260009f172f644b10a27201a73812de28eb9f04cd0e4a19080001d082189b7b85c788e02324b2f4b07dcd4aa298b44b0f49efca0b9c0811b57729ec7ab7f0a6a7bd14c220394a2609832a26b3b8c29139af994a5c96bdcf13d8fe21c225b5e5f5aa2e0c7a21ec3a8017c885ab5a694aaad999c6ed14b77dba90fc666c0ef88336d79b3093719df8179e25bb59301a67548cf74122954e34fc5e94fc70b931a3669314605d609cf06f25f74f76fddc056cfa4654094b724636f49fbc3964a5ccd79580cc8a15eb07eb4061d528a32de192413d388b051660d43507c49720ec67ae41461b5ac87cbf91dcf42af4d38680f450acb9c6cec903807153b71613f02900117ccaa11e2cbd2885187a49089b63c3f1106fd5a3070a38b25c9757bb9b40c80c6fc4611334c4463e1aca784af6bc38584a72ca4db482361314fa1b18da660f440ab6c9167a4c18afe6395cbdc5320fca49aea990e12ad6863a0725863dc1009de81abf3d56ed4c70258096f6647cd3c5b1033512a742984af1a08617aa63e1b754ec93e77eb1f379532cebb7d4421a58bd133b9ec264ffb252bb8b546961e2f602aa45c5c20756f51c0ac29983ed95036758b05f6d90aaadc464e914004ea81eb74162d8a1e4bf986120c1e9d13cebc774677577f86c10addfba2b9486f9123458fb20e73c32c8a36a60f457074ba640309a7c9b744413a5622f43ef3785da0b77739e00f1268b50e04056b0c2071f8ab5451cc0d2861310806a4f180867310b03c0fd0d9781b3315c0da53d30b5a84f27962326084b4cf8e88a2087b420a9299c34a517c088e12ab2f54f35bc4542b85d455f6e9307c949cfd617dee8153a46c99fdaa1c00795296e9816e557369e34bb25b1555199dbe0a089cf83cfe019e5d013c6507294ce27e51ca5e805b894c13655ae6a0f9da6051706d46dacc69ec3898fc58ddd5c75e82345fd8137cb606a7707b4d3bb801f77b615527705399c8448f95d3c292662957e48bae0004acb52e55385f0cac2a9c76c471e2654968113c98be84c89e0a49040ef23751521558e677e32089a6969beb0897f74a52aefa2a087c454ef26efd08a555d6000000000000000000000000000000000000000000000000000000d2c662773707380b77713c51b59f8f1c67e6541a410027312c5dea82f0ba5c1f8bac5e523fc2f73973b46b1727891a6077329e10e94acd027c9dfa38ef4e21e4
ciphertext: c60d4aa71649960bedcfd1ba225807739b82f912425f50d32153167826926e51f8ed961b5439fcc7a3804d55ff46d5b873e13a0c8ee7606fbb21c5e121fb8e60377ec46ead034bea9c44a685e7a588875e5bc2dff98e5529cff460ef5fd1ede8d4cf2b02e9a537887028150d0d79ee6a0ef2f0d5507c42ad1d788a75899d0b7243f7179af88cd6b7fa41849f1f49f782eb0bb727a9b0fd51ebe3f05ae80fe7259aac42c8b0a70b7b74da297c03dc1f06c44edf72773958e5a0d38aa91c35e71b27155e875f3378ad6a2d064d6d7cd56689b1a42dc4a26ce2cfc8012e147940980403bb6bc164f3a0f9055867efd0bdd3ff4c36ad8165aaba00c8365d217d4bf208312f3ce9fbd7bde30d6e4d3f1a98b0a20f947d03b45f3a25ad481fd1dc271a0cafdcc04f02d314ce3da2e1aeb00c7d3a88ea3ea2783b75e16768f0aa122db015492b0ac9bab3d3f85fe6d8e32cfd66fab8e3138402f690bfd3a5fcf09ca27cfaffca96181b8a906a67d93303069ff91c2e3e6cb26c5608bb04e05ddeab18ad3ff916bded7e9e27c99492b7525f95e02833ae827c48b1f4ef06b77633a66ef85520768b64641c5b1b3bf319c390006a026b3a77331c530aa5a86d0e329d4c7bd729992e3c574876ad9a29d79b09018e850e2e63d51f75861af33e6acbdabb722d41312294a9b302aba8e3f04ab1f04688e373f86e3753d84070bda2feabf6b94617cccae0fd427f90f43d3b686fd772292fe1c93f355fffd2683eb8dbdf171b69bb6a5c929b7109744f542a21539e04151ac7e46f5d4b8b151981d4860a366d3500c3422a2bb5c24fced0221e1b84b9e5b587e9bcb87220dd92c127be67a396ac18cfd3470e715ebd320fa07097122f696ff81923e4c2d3c0310bb8b70690dabee4e17efe6d871b32eeaeebb448f7d65fd60e7a3f32cd07e61948be330179dfdab4d748d01694d64edabfa95647a21ceafd5261cca24a0548a135ca1f7c262952bee7a291857062d3546dea97cd745050121c82a73ec9c0095847e0563229ec36046ee1564ef3747b49812eb2bd015025f077b56d63500bfe523689a6be7b886fd8aebbff18cfb6e4ca18c2d0dcbdcff8fb7a9e852f81ffb39245abc6ebb9f58a28beb15942cfd5f797dc867f7a855a3e6ecbdd9a8123ecdc30c7240d44dffcbdca05bb17d524a791ea32d60c65dcb6ae3ae3b724ae7da36b88d3563a63f4c059fc83c97ad79602cd7701749f92c02bd65f505f407b64ab3f8417d3de5631804eeae565af62d7fbf95bfe25126aa2494368bab7afabc23825d6cb03151222bec05b09a3fabd5937b7a0ff17246564e163d049e0724456576f250045d13d99aa07a5f298cd76ac73f69c3547ec9a344998dea3448a96480ece462922f76f1fab68d030796bcf570298013001414ee238a8ac4d7047514ebd5c3e55e051846403acbd3d7a581c1d53084eef20edce56c2f50443440ad0fc77a955c1e5c4d610cb45f43435b1a66bcec638ce88126ad88bd1b0d10cc5aa23789d5c8f4d9c63cf796e1ee6f7fb309855f332a648c731775edbcb4968592f1f633a3fc74bc5fbfe9c0e74d8379fc56f869e63d8db3b9ffa92e9b470e668e10acc1c7606839f2ec0abd02629007e3b1300e558e5afd136f949eb1e6ae56b5a8c21d15ec4b62b22af89618501c1af9992a3f002242288fe01140e2476ff900afe32685afac7baee893bcfaa54c1bcae65b2c9db04b1e17dec3821145daa041150f3282a500ca46c535ee47ec02b1a1639713354bc4ff7217ec169a63bbf26a26b2c712b02c76b56a8ed0535e3ee1c3f118f2a68f9c699ed8702f3eb30328118922b15b8399a3fca410dae21e7d762e6e45c8de7ff023a75211e42d1acf1d8f506223cb281fb9615b2de1848ad674236e768a0f315041daab6f491195453081535f9235f6d215e5750226ae7eef4df26469cea1d0541e7932ad917fb360f4a9d5601126b1c76bdd1696e6d59749635b844c9d416a12d0eff4c4a9e7f40860b047ffad7bce7439ef0fef50cccbdcc848b02f66bf67f2d3cd795242896c5f2cff82864b1d1f00974c9142d0b0ef2a8d00289238e822d352a924c689ab15e6e5b201ee7ebca1253b9964a04efb4d7af21c6ecdc03365b4275d72502523d562209a316a88163ca33ea279702309f8c2373514d459a5298ce6999571072852d996fa8421fa594069645f034d3
result: pass
shared_secret: a6ac9ae3077504c8a7b1e5558a0fb1e7d60cd2bc3e59d615e68d5165e4903d07
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 610c36a286cca4815c657bc2f28b854aa8602890bd6ec2700d64b495b50d049c5963b8294752942d11c1d0182ba6704e54c003b828bc58b6ca3ee0823607c3c00bd0471b4df571c51db3003e4cbe6166c0caeb747f79573f5b8b80d12ca78bc1d3e01a318bac91fc863198afb70cb9256a330faa06639caa7ffcc1248b367bb6b0bd905ab0098b79b85ac5dc083ed43ed8b248dbb72e5ad962b3201c92b132b2961d9867b48208896c11afdd929be2792839674b18e4c1e99a7df714ab7ecb58570281ca80a92f148bc492797564682b560f1bfa42b2f7734047cfd6375d3dc05846da1d3511cb3c8221d38226f29ca52b07471a41764f86ac3418a96aab70fc8454d6823f8b7c6211d216d08c67eec474a3cbad8f3587e22670ae5a9938651f3b48011341b6140ba393621accdc3f606b080579197c48967f1c8d11026d8f90b0697869ea49cb9db086ef687227b2549ac689b564326a2280d8384698185afb25941ba0365b0c1939148ed6e1bf0ef5c764832178d47a01c3573aa268e168b740194a9b36ac2580a7bbe1625900befef3adc6fcb356100ddeac4393d388fe647c3d623d1e6a56a96073bec59f5fa39581245e31aa33cfb865bbc28e9f2498bad34a5bc65c517bb8cae19b6d1864fd7a0c48aabc78d0373a84c168f33ff13a9586aa349a185e3528003e804c8cacbccf0073da46567f7c3ee6a55eba856851234b4f3725e1bb3609e50cd4c9c96ff947c4b048dd7c64b3498d23c234e9bc45230b8b0c797946d0980dfc7bbc5773620b8330262ab6247fca5684c9fb8c2e692c3f654099a7a93d0aae62d24eb594544a81431f295bbca7b15dab7bcf728e3dc61f6354a459a120c371030f3b622569a78762b1cb08248a455e0f0847e1531d194acb0507bb53e9c0e13c8b2f45ab06362be3d9bb58ab6d90825a15211f81f4987000cf74355a28ba08443b3fd9d26b70039955773f9f840207f696d0e7a4989c4b38cb23df626e53b7ccf7c1bd96bc3f68c20ba180a482799d2cf975e0a39d5fe863df954665509b3eb63c257b8c9e39050bc4a739468e716cc289a79053453a28906d003535536439d418736a95763ae222c8870b66f1b5a9978c29d238658a3e773063dab55125e851983706c3ec68d7fb1d595b55292885f758a8df752fd3d97a8dfc33a228c896a44bc039ce1a2069810b1304d44522b1a5e43756cb843b5ef515d89c310f442f585259e5d460dcd578cc51ab49e63a7cdc2566d77e6959a7d24150cf0b413d335efa65385ae13b482b9b4db4ad2518b71704098d7481d2233e2ab201dcb4a1b3604149710de3cb247f29ce8ccb2ec062b014708f397482dae5936bec37663c849c9baa9d3cc88146b88cf970e574694af03fb78205e205435221b32e5513989047e62775f1ba5aa89a10c9d35cb566328eaa5748e9c5057446f96cc691d80208940cfea984df8817d4507aff0a0a96b8c6729329775c8d75935d7624cc0a06ab7a950f2b73ce4d90239706403c0651dda56544ea59bb06a99f00bd698a8c3f127fb4a3759317a05ac244a07342f9a47257e5649dec2c7050188ea669a97c137f707f4e5b4c57945f82c1b0b2040476d73acb54724cba00dfa8bb9d8c58e33260020a33fc04021baba0f6375ddee4a6023846a2dc73eb69758edc915ab2446b1c59fed89bbb86a9be2242c117cb719274873c8b0a2857e4076b3a792965011675c23deb8bc0cf7b2e3ee38493461f8a2068bcd899f1822dfbe8444a612f9fbacbf87a0d45f98a541c5141b230be12763a3563f5d47e369b65c10254e5f63934a05c8ab3409d7b4207dc423d537abd4404a9ec6afb1cbb529619bee740a4c71efc952b3b871043c24c0c919f74f508bc23a9c1ea8b76ac449e28379af42bb6140d376c9a4ec76b34042c7d711efb559c8c87170662788b4cc907e4882d4332d90c43175cc56eb943d589a30a5ac1ae312aeb8432a1d7b2f7448fe0f48ad069989e908d28616530246f8e817aecf6ae638acd7030a596d5be06964eeada35f6175bc0d20c26636943f1609eba3b8852531f083a576231c9b222a9f96ab1fb79aa0149155881fae91adf26c4f1e463f6f603511311351c6c1d1832f482306d66a4a2e585b7e223bd539fc45c5b29558e3110cc268356edf4bd6328240b1a7286c71c5cc17284fb5058410381c74456c1ae3ad93735b6c7d0e13621c924a67a44937039df4b4da608ab49978109f077c961c2e6d02cb0f429fb04bf7b32afd9e0748a50162bf49ab17602717b25800ca3c762145636adeeec6543c43dd20a2a194211030971f16139ab86a22fe07664b425e47240ee1101cd171bd681a681804d38bc4cd562b7675a1a4fb113ab476fb7e67009c8ad5edcb053e77e99d10a348851f266919d29204f5bbe27e8672ed92e7777aae4141a8e81a39cd83a30005127289092929a41b42db3ea2c3b9b4e14a02a45906e871b5ed4c5067180aa97a6967642a5ea52639f27665a78aa24511ec6bb8ec7c3ca2fd34fafd5b5397c75c8144894b56d61e57ef77725ed8909afc703c6cb858fa1c600556babf3cf4fbc089595606f450753c727b42c7e8a8c470ae99e40e518d73684f2810e1ccb187441873fe14cce8628efb360083029fad17c1a9809daa08df859a0626365e0f1ba97ab9bb0d09e3b2632812152ec6361cdc65307f916b1782eee7873c2313089f3bd0c5ba938b80f1b43c7fc6c3f801444a34ab9c167629076442b1cb34c9b02941368c6377098a7618ae352d7cb1ed9419d56158f9222c644f58c3efa5209317a165434b86350c1a94d21fbb065854534120e665bb73266b6a392a60fda82b096701cb100aff65b44a40a4d8c83f8c63621f44a6de22f9b4817a2772085a95597c309b6423b9710cf72720598064717b52a336a0d3d9b6092e9a445a3c507e37ea9ca126b1b8f4f702d55959faa7b80322045508b2025ba64575049738699e2e1a42630c80615724dca7e98acb40f6415f6907e3649962c451f31164e88601cc2c37a65c636b6c146cdc24e5ce6976bc3457277a588118712cbabd8dc273fd0c8c3835fdeb500fe035116f6beaf437354c39e9152c3c9999f5f98281096a0f1cbafbef24e87bbce8f88377a0a3541eb128e31a0d77c247dd32180b97bf6f8bb2f611e7a7927f7ca25706cbc7b52598b4865ed8b520aa53e6199a96a0bc79a09002e07bcdf78473b273028b34e7a7c9f71ac38bd6327ea4c9acba59a07b59433908a3b8a4cc5a01d704773621b4c750389e8557498747ebb3b8b41b99105756205b2b578f668de8c293ef989a934cd1c80b18d700f7666986fc445854c9a6bbb8c9ae050c6316bafda5e98aba4ca0b92e3c3a43c504e214193b43c9c9ccacdf4ba85a57c6da6d1a8b310c4f0b7390c7001e8004beb92bf55cc8eaf37ae07738a090018e843288a965d4e8bbbf9a18730106c52758367361f558272f3887762ea91c35a23a708394b8a3b505098f7ab8ba505bbd1763a0339084f3ccdb2e68ce8b032bc217d51110c6cca10f277142a844ce5e7c8800b5bc857613deb0e5e59b4acc72f0fa1bdb0f016ace9b02a43a49e83c207e8ab82e98fa1144a47809a5dbc5be622b1bb364e8000cfa2c203f247706b3b3dc520bb308a62bd893c3bd890102bcdfa1b6ea91cb5f86758d5339396184b2ad4b36d6c875675261658615e55c85839cb10ac8c789959cc675a976c4b88146179d38820344f319b1621248577294d4550a33e723d65f11f3f654f11f206a7b4c4b909a4b1490f41d68752aa4af2723ba9c092d371c0e2459c9361230cea1772ac0990b6626a9914b20769c51b2df3996639fab765164a7b61280049ba14d55a98537e85ca0d8259b14ea4151c787d49c9b2d291c9e2b005c13a3d93a88840f9a19d30c346b14b413c150818850bb8585ef0263b515a74e79032b3c561ea543d652076a38fb4f769318378510a8e277334c148bbf38868d74ab56adb16f75a6c4ecbca6e1ba200874567fa5d1bb42527f123faa69bf2c45e4e79022799a717c21260e3585d6a86b7582a1f166dee7015abe11b42a961d60750e2e40ffc82588448b515bb4afe246c875297ef87740a775fcbe0bd902c67b9830c6d318523e422b0060bcc5a5a5f7b267f5b53e111c7121b86a6025a0fc2716fc11025c857ae1926fa7066ab527045d8244c75bf13a1a3c6688811d35ad23c1435b4cd536c6f14f78bb5d34b4bb34548a375b93234c63645d7ab59580567f9517604837fa6f98b2b4911d9946a54d0ad2cf0747b4081b904a2d6f953c70065b0c4b698e556daa27cee3b40070326f43c3d93a7cfc649000000000000000000000000000000000000000000000000000000bbd7982687ffd48dc0a8badfdd4788bce9b1b4242f5ae1d14b1ba97c0642a6b4e42ed33e0da5856106580e02aacd0aa1546d3df0571d17452d22f186d011981a
ciphertext: b0ea35919c0560ba7caf9fb6352b36bba962cd45d3d2b7f6bd97ebb2a3ba6df22e018390330f75cb4eaef8c9ee9bde4a1f25110dadf363df31f3f8702a3c14d5d2da303bbaf0fb199384a2702f7089fcc63acfb29d5e53571102566866898055258241e5ec4f1a325175cf3a64a84ec50b4e8e511ec24dfdaf0ca79911b1d84b5a0872fb1618edf364ea06d7287c6ac39e842c56d6630ef38f4c812a8d1fcad73f2d4ecf8f7033c1f5ab982c5b6b8c5545237c4a3ba8d5ece30dc93d1d4f4e89d3bba0b8149ee5c2df793c8779d45de92630b292714582387e60769209ea7d00e2f1173f8817567f52fe53d908d11e8e77375e7d2f73f44a01ee3c87c8f4163c579c40ce70dbc006ad2426667650c35d80ced3df0f3f626fb52f57d874625d414aeaa658a220a4ee6350900dd7b1b9e165661b41cd0c96c3b665d789a297f6b7b4f261e6dda3f6b027ed8a308f1168627f71656bb0ad456ed2b197c672d88ea6bd61fde6dc3df7e4d8b505afcaa35fc1d9b5df57b69679811ab5b738d62a5800555fe282dd4d06d5ab25a3847b4f22725a2360d8b47c69458b55f485a1ee75918cefbac2b4945c20a7356d1b7c69f1c047ba355496e21eaa2123b5b545e86c23d4cf27011e68611290161366d6c12b340292113d3973efb312b1474807f8cf735b76bb3a722aeaca7b865530fba177f9016d1ad1a7bd86da6f657c32d6662e57cc691f5acad0faf4f21027fd761ae23456b599333c9af918166927c6253dabe508c7d931d50cc824c589881b39087e02b52276b9d4252c08199dd4943d72b4fc14e603c9e901d0038da715973b0d168b13edc26b20e2649f37d27c9cacc7a8508ab340a1c3ed8d26099171bfaebd39b0b9fedb3c195a381b55c13365139063e5525400127cc963d9659c964ef3415b31c3a2a923ed3b96ffd327d6eb4929ce1d0d26232b46da119e5e38e71a2dc97bb953567bb5dde9c2d19bbd208c85b135bdc885121b5f7195904d2a9141bf5222e98f95ead571db8fe2df9a93501b8fb9a06a3ce0338a37920fc4268e26e71f94cc218d6fad6c2cfdbf0a5855b186ccdf10f66f01f884f22503c530b3c5ecd96d9b55651b1eeb3af62cb7a4cf4cd185d98afd1b942e8f7eff849ce843e113e82c3a875fb996161e0d0185aa99e21e7c99c9636cedf0dc9aeb55a37eb1f744841f5d8fb3eeb5eef76039a40a5c643957cc81dba3fe556234acc512efa07f3a140ef28a93ed9cdd2088456e3bfad0e8377e69fbb3dc67f3864ab36f8f8422837e067c20787b80d77a30995e5d78f84804cd7c897d0ffa5fe1e7b92f17575d94512b6a4b5888a3cfa6e03be3a50b8797f43a87477982fb241f24af59f13acf60ecc4c11e558b1a4feb81f69acd5a67f56bd698888c9f00430dd8f8309629f7c29e96d2951fcd8b521265c368e13e22fefa30bdecd51407387c77259e64a62e5d705d3d46be5b6f710ad86e844e509a3c5c1dce0efe4b1427bcbe56758432301a14d8b882a70cb5c587e1636ecf96c61998bec7a9b6b98eab92be2e30b30174c87bb8bd66d13282dc4d1b67757435807a90a0b268a9f760054c219bef6c8811476a56a14994c760e21a1b786efda3fcda5acd859967b9874eb049a9690b0acd97c907c1ec6b1bc9790b1fa6c8f15518b9c18b3f0cf672d26496be193602d909efc2562bf72e83a3d8244eea1942c6b6708f006963ed1005615abfdb57cff11b985134ef3ca90116a7ae35299d1627fc05cd40cb32a83c9f9e19570ab0b4e079ae34402641e47e1f0bb20b63e551dc7c090421bb1916e970b33a6cee4be985f28ea66cbcbaa21279b45a4d3927eff26dd1d171f18ba8c5e78644d6027e7ace96ab62bc862d8cd69bdc9c07a4d8d66ce2a08601783e6d40665fdc637aa813a447361ccd9d843bfa05f5e88f1f74a4d6fd1bdeddb1c50523d731cf6cb4686018e8518525a83c2aab2fc5ff97ea1562c7cc7347482c96675b0b249f99428d68f180d6590c67025e41c80468a3edcf147368f3612456e9d73bc4d6e0a70364036f75cb6657ea99c8fa365c165d7fc912bc583f0f4e57ba0f531544282e21dc42e00f00fc59273d272a711748bf62760377e5c30c1776542936a10fdfa8acca0b4b5e5c9cabf461ed5caa9124c59a4e867859401c158080970ada9cf76ab49e250411a61ec5e83c781c269b75ed1c193bf8134d7b0dea
result: pass
shared_secret: be6aaee5bf0744e7ca1ca0e545171f3075aba9b4d10a71ae00848c8398e3c52c
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: cc389888219463a7a5f6c2ca3014accb3bc26f2318f593876de6a49822b6c1e694b7e5aa9140a0765b6334ec762c8bb018d28a99004081256159c836f4f800d0c9aa4a7136fcd89ba7cc1d6a32b23ed181b3fc118ecc60096a4ce8261ea2c0a6ca49baa28b75d1b40215367e6a33a1c177937bf43a70c3889f6aa239e20e499bc7a836694a0bc2912cc7cf211ba20c12d5ec312da2815ef20c8565712b22a927451271040cf4daa44d79705b97993584424e7b3224a5583e5b8eaf640e85015676517113f53a415220fde3638b9c0a38115e668545305ab298b9923bc16de5b9137b30a39a2c8b5fb75e4d1168593a8eb0e067bb9343f1a030e5228bf0b3a49169393cd14f73c2b8221b1267627d80b97d30544b02a4c7bf06099194b2d646596aa439d82a214e6cb9c5ea1ded727c8143755cf881415b6357661a90d5ae759475baa6076eb478a5826f86f9868afc47ac3a02a0e84579a25466a63d933b071213c886790c320416d9422d280745758779635ba6f848440b2489144866e8e018200cb8305b3060926d7e7213089a06d044176b053f3bfbcecac7840dd7844ec29eb17bb2caf321a5b17848c16a678552727a3d70c34f024164b3c4856b0a4ecbc78d345187c6e09f055273bb775078b43ecc534a40e66592b607b56b5f9304aeb048375ac71c30464e979a656f1728a7b700e3b33e5026bf40198b94455d2be37cd65867522b20bddb5ecb7a010191254b8a403f37c4577a613ea30678daab55508b16d6020f074504f928dddac1e8367faf6199715048c96a8fd6bb225715accdcb012cc856a76057b6b72b09a4aeff5b8ba278c54a750596e82bda45be19014e8ff52df181435ed9ac8c402147b539ffd984c291535b7bc8b26c5036352520730195fbaf40033fac450843e808b9ccbf03b40a9ed657f6ac4af8b65b4e389280633d79799e0226b28b356fc2e39f10a80452dc934caac7c3c521f0c5544e7821a403688f08378c3086d3ab8f7e4036ad516778da606204aed3ca1ae8c42e11038a64ec78a5fc5dcd0475429124b5d665e4acbeccca3a296a8e878b917b886ec7f029491c661bba684ac4229cd71373c829055b602db0518a481230345a34a709010a03e4b197273510a0a24465288c327c10c75434d9473208a7964db7792ea81c5fe0c4bd967c3f0c98765ba7d3faa4e6097f09e9bf10638fb900a764e4a0bdba2f19165bd69832681310a7a2585bf06322a3238dd26a4807af44faad999397d4aa14e76c2cad5326ce573d7ca04c03db769dd01a65583ecbbb991e7a31b59238f8741845f1adb5992607184dfa19a9e8840ed9e1622ab93031e2b448860d411a3d239277052cc8ea71046a0b1ada191a020c322d776c6655ae71964d86314a86a47b6a367b8ac5a4aec75677226de0c1864492c88fb70a53187cb76835d5477346646a9da97301156a3ffcc231f9a0da760dac142674e5cea882364dd74fab66901dbb7eaf037008c52073054cc2f94ec845444054058402515bd206d496bfa02c442c746ff3e662b899c34c40900902c4f8ca146458522c6a7af772b2df483f9d840fe07464b0c66fe1036c070c6f70278e9506342663b07529247b1697c6b844a5959672b08796868e7107108ca4c30a58be4ff7b37b0402697aca2dc4839dc51a8811c34c8183442711a8d055b640cd73d2caff9357bdd9ad36835ae9d55d1a291e040652d020a905027a616b3b5c63c0be2c1068e9cb0a9b4abbf346590237f96422308ba86b055872e156470b53e35b2a604bcbd2b97849446684149a86d9980c5182f1a020c32b14de18c03cd0633e303bf9f8a24ff0c95d5a65c031c18550b7d7d5b8ec672c3953bb3be0c3f13925200394aabb26090a3b9a12bde30418b997abf310c1724a88b9782418d09552a63e2855b7af2196d422761f5c8a877426976c90552bc203f5657f5370258b936c3706f074c11b3b2586391f4c4bcdd959615a819aacfb48d2c799a9abb182c7a9fda6a80ee50c4a827c9f50835b1859033629a9601b5b8b357913b6de142a501974a0c191a071a95cb8c45fa857736a93400141cc325d1b4518d3ea58a94c14f9b261759281b00213f91652b1e52bbc0c488bc0990a136e8e3b5e20f41d9f218646d43745245ca4c2777099032b1a5060745e8525bc617900d53b414dc995772543cc58a6bb7c4868f8999509428a3244db4081ac6b3f3c685865814c318032a678ce19866754c0774b31cc47a6a8e3cc90d6a15e54c7370c0360c38409b126c06d4b06b7d652318cc810c774f0e66e7e547305d03109030fded56940d472ee123438551d6885922ee91889f97ae31954703952f4a3951e8003ca2836fce071e382373c36a27b947ec8766bcafb1a3105aa2b082802b9bca0e4c50b80cf9a4033b44ba4b8a2cd6d480a315b08e7774d68f8ca8778894bebc2ab431d63c931e61c5366699b65ea448c127b82ea493034616fc1b6be01243bc84dc92bcb50aa4c7a417f1b5268e93b35ced9cd6263227c849dc8b107b10120f9f690706cb0ddec8fe2b20a26da422604c9135c58f0b06aa5180ccb55adcce07e51f885998398c4f16162c33b89bb37a09b84dd0a9d0e8c90a71c2851e33b3e9cc5531a76f81992344161a837608872355d57111df72412e58c5ff85b97ab2016b41487f56a9fbb48d2e498c2e12d3972c677caae5e439c598b67520a7ff6ac9c2424482988153b145d6b40973a1582b90a5bb76716c9878dee223046f746f08323ac3a5390a6148d767c3054524b7247c26c9339c0642632710b8a4fe0502dcbc32c35ec2e1e22510ea4abc7c74980ab25f9fa58caf4a70eec2d22c1957f162f5f1c5e5ad0a0fda4c342885081d3070d773cc972928eaab2ed604503257bfe448ef2a9c9c933055e633a339792d24a44769b95123c1f9588c8759a469c049a75bcad2e6087559c8afa5b6415a8825567aa44f63ce5b49ba4fabaea311918b804c7fa2d1742945f39bc9e8256b537128a9735a0939a1150c10418551723154cf4c027a5355e1751a9866bf558672fc68324438f12d83551ea49b358cf873772ae7853b53c9627ec75479c746a116c5e66b20ce0478c490946a0af4a3a3138534c2c94a44bca955e84513f548840b929f4b4ae51d53d52225a21b320d0d8b075358b019720c325814303170b627fd6856a149214eb192659d21001d5ba6953288e5a62d141ad5ff31c413418f332947f1441b8663f95b1a8ea35576e725a83177126719889651e8f20a8fc2392cdf55976651f1c177c5d8bb035993b0f2ca020a8b22b27080c4161cb86abda574deb0c858d14ab4261b1b8718ac12c56db9071a5acb00c4b1fcc9b9880917f53cc12bdfc77103a45ce8a2f4875c7e3711b659b967c5c26497c6e2903198f36b01c56ac5d054672d6914498643ae6b5bdc2447300737883306e4250ec445b543bb06b6113db5369da2b02dde3a11b2c080732979676040ddb2941956068557e65e0c4ae9c2834671f9ff65c246b31dbfb82720c8f014aa35d343b8eb762219b0eb802637574724595ac1c92b85e9a416089a2366ac9002d01af606ee9b21868e72ba96c6d5adb51f97c778cb8653e30a253b333ae5bb600a2b064cc387b38bbc0379c77dc45f7fc45fd060c60bcac60bbc794d18a5a8ab680a0ae202c97c3f153d07058017bc0b74458959c2a358b6c3733c60374a2ad540c75785ec95cb0bc125df1e8359af2bff55026d18348d0eca6672a87671925a8568060c09913993fc6f89e2523023544938a573ad208761e3ba85354cec6d999ee1c5f909bb973e0780c84101cd3cb42319b0d5614b9d103be8477ee9713cf943e038a04259c0958376c1013445731b0a5224402845499f30449f0800de86b614718bbe333b4b8245fc1a8e0c43eadd61f11f532ddb7551686cb8b054b2e90a19c889ccf68394cd501fb92a7211b9b599b2a2b637dd4246a7b8a5f713acfdeba03fb513f998177dd8cb216aa12c27ac3a5b84491738e5a745cbe7a3b5006bae6a08b0cd79a2b27af3da8ab021893e7727192e28787a052df8b434abb0f3a5866368991aba8ae3c891a0870327c3967eac16e8bd725bde990ef882bd6e5663d50b7adf75048d3202b39b44606ba1ac33fbb7a866a59a8c70988705974ec413abf660d5e98b6d9c60454a8825874953d778ac527578769aede871242b04561ea2d6e5c8aa04ba44228125bdb4beb90ca152705716cadd283ca2fd83ed9087ac5b2c7cba9334fe936c69586e3399fa46a174170aa8db62bd7095736012b49111e73bbcbbc89391bf70af7bc3581777c54d74ac2fd37b45300000000000000000000000000000000000000000000000000000057407f828b076da9179f40805f8392d4baaea0bac363dfbac88cfda8ce1ed279c975767ff083234b2979bb109a24a27bca17d170abd8d9e6ad3c3ba19e306bce
ciphertext: 1feb4f1d63f08052045012a21c33c2951b16c4b5ec02c00093d54ded6f94309e44d558787273bf593ac4bd77a56fe4dc30a54eb68a2f473c31c239ba18c9ca489cd50611fcd3be42f6f5069facdbcb7166a64ba7c06ba953142e5914ce20ec69038895c9860e69ce6cc3dac6c1b28d30fe83487d40591995f091d4ea116ad2675e32bb83325b7f379449dcded935027120d01ee43b2208deba910ca7ee635c5b928e5f6167307c813c8e7034096878a2915ed2d20898d8412ae61a72378a4eaee2f227ad5467d04ab884340cbfde2400cbdbca7e07a2f14016fa9e403a2b0ed27ad1dbb3cc492f584a6b5a7525baa628303039f69cf1c1e4db920ef7882de21eda5d2bad76231c88a061fbb2829fe93149c69204e2e783009beb4188fb876a6f869eb11b1c32c2ef15f9aef62f699f9692a502a4d87e5a497097ca73f8fddacbc03dd40a53abf267f749f9ac0f7b4ce9417a0f5eafa91fef75441ff7c887dc2eab2336fd257d4cda373121af864d4707fd20965e063fae456f0bef8f587bb385f8e5c96592c9b7d6c284197ca1706e1961dadf16a2264f74be425ce117a95dc9466474c856adb20931cc920177dc3f8c93d2bb3ad5f7c5517f0b7d141b87a8c287207e64158934766c8845ff0a480da124716b11d0e257206f68f2d4334e8e260895ab83e218e032a35f8d792be7b413b2679f8044e1c0ff67c474ef4c9b7e0dfd3d9bc4252fa81922cb146417dcadae7d7a7ee96e13bd480c96a4314f31fea83eef588bbf1435528c51eaf05cee2f193c3fc234d695ba32546ec77a16b1ea8047498125f2bf78dc9510812be57fe0ec77bfb3e28f42a4d15c2a2f0b54aae023ada92395cf384a1524a24e36ee2e69128fd2ab78b5af77d28c2e9ccd6c706315d46887db0c0c4f28666da7437489e3b245a19fcee97f187327a5806d35889e63940b19249d627165727f66f50aee62dd9496d6493c1f01ed0091e985048c2aa85a3b25a4f90f6e9f9cf67d6961ca246d763d3437ad64e7bc5c58b10117a66c40be088c58a27be4bc1360d114e61d002e271c4806b872f5ef7127217d5af6092e4aedf8b5c40198f266f9e10c560d4873668d58c912ec7ec18d27249f5be604a82d50421d436a3230780419bdefd10f049f404184b3530361c5c0644c3205c32fd451f6c6919487aefb12a75c821cfddeaa14c2abe20db3ac57ae0ee8ac4567db2d1e2d0920fa036351e8bcadbc14ab73d0868df6ab06e675ee193722f93f64a5344bd70593c23647152a81acb4d1a08b62b5f0b2669210d5d7845248d95fe9ccd796d73e34af955d1c94edcd2bba91be211cacb0884a90eab8a0125130ae65318f5419810f4df129c8504def662df4879e2a8df02d881e9990148065942c0d52865425f3239c4a4af51eeb85e1baeaf647e794b9fc04ea16eb328b8b1d0550e5dad8bf6248782b530735f8f5da40cf21241a2d62951cc9e894a339491f64b78d436c635eccb855d3a1f7d64f63f23023620408df6b3d190e7965d219a0cabc0933f7d50d9854e4d4aa7a5cf67b37e0475241a5af8e5000d117ebcea40b526c5a669dea1760d7fc30519148649fb00ca434f2cd84862a2755a99531854cdc847b7d5af3ede653ad6959f49c921d4a8675f7f3f51416c39e026488c297d844a8429caab43671093cc3ebf8730a18bae06f10ff8047cafb8d80edd7630c95d008cefca78f2b08ccb330d36eb33b18cf47bfbbcd0e2f81daa87160f421603d10409b8eab53f1561623f5167dafccda4f9a4e6504a0b5e67ab5dcfae98672f4cf62e4f152d09f2c64dd81e3476839aef8538a86f3b616ce55adf1dfe9451ca48acbe210c32ea1cc574730b37d4747b580c66820caf475858b4b6ad0eb7c06ed56b8f16f83595ee3466bdb8aaba3bbf35a177fd6645610b9dc238571e81b27b94757c9004a4c512cbad25730bc6f85255ffdcd052447766219e667095d4058e5f0045e16c0fcae1aed8dcb7c25fbcaf29a71a8abf72c398a61b1a57bec4b11a8c746bcce3ef0f82b9b2bd702d92a7fabc1efe0065e662270e1ab664cb1197f00983f1d265ff738f63b93d5d95aa4ddef2ea3f473440ce7ca1558b28fd68ee09c7b97e9d4c2052fb1dd657ecf09a2f664de0902f23bacab5d64bd449a0ddab34d4c0695c67ff5f6e11044a0db15d2d19a9ce2aeb818f0ecaf8c1522276521b0193f76e2
result: pass
shared_secret: ff81d45deb69b6890f147710945d1b750cf17e876cd4e694158efcaf4fa2cb15
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 078bc69561af0cc77acc291fcb063e1d7c82bdd7cc31d5b44d1aa746e261f2a592d4aa9165c2c3755aa457b886cdd55840767f4fa0b19e45410872cb1db3b8b5829c4ce9b2a8969330cb5bba2397119310fa072b7053b35fb135d04977b9ab4766c4c1ecd9695957473f10c679d71d2f6b57db2ab0726022bfeb10b61807d35447a141255bf5b3d0e3bbf5cc3ae74932d87268e172978d78b99daabcb16b44bd578f6dac130c2528fbc89ffa94b48e6785293023e2605a8533a5ac17c15f34b1e30501729a78d3b8ac6e4a329e1006e0c0735c737283856d7cc7663cdaa1610b1045b7423ca8ccb59ca6b1c482dc02ba117c17588809ef8506f09a7162720142e397c6ac0f8fdb02e4c1c557050af941ae8165ae01d9228f767ef1ac3d72f27cf9a2282a6c379a669d01cc0a6c560b21169557b88771008dad62641f435e0780234e86c1ead05f14c0ad68b6b1041492a166bc4a278b0d352129556d55f37ef8969b596c5e41f8597878c8c6c83de675019c022314215eac667a7b559146478a4a5634ff193f6b83673072643efa59c27650fec168ff17109577083bfa8493f38301528f27681405693345e523ea4398055606d4ccad9df967fe59428ca7502f046506756a6b9a78182383db4baf05014fbb20afaf148456126fa393abfc480edc92465d93aaa158c2a8493882b24c564b607cccb2c8f6cbb43abd722c74c2c63230946acc091c48b865cdb33edb712c670648b07c06691687685218ba48648fa3054ae7a6a663aca6aa4e66506516100c8f2caf9c0645f2554c10c480e798b9c96756e42cc8a7f626c2759d21555342548e0490420df3a8124b0566b1804933b68225359cf66caa599c55573b70d488d16185496216cc09090de382d570795efa569aa5bfa8f4a60665cd30d63bb36cc5ac050310ba9bbe4b3af2f9400296bd344cb72bb623c757366ef1369c968578eba52a092dfef34aadf552a63b1495a5b78168cf6e58b218a3ae64310d16734d5e72b2036bcc001ca07533085548809bf114a092225aec9cce6950a953773ee37ad3467bd5ea0b4cc4c6b0695a774781ce17004cd48e36116776db19565367c92a94488ccbf4ca3c3960524d1b13d6f77399ac625de5a2d09954cf867011f79bb4c3682cd40f133a9d67778a24d7cf1a5b71b7b81dfe335d0fc392a8b12b234950ab79cac94776ad1b713e99b0f394aedce739a15334f19042f4861e739c839ce07da145808260b159625b5a742258779440953c743c591659b9d982aa7da028c7eac4390b47b243ba23e8ae4fd9c98042a0c2d25a6688c9ec774cd7e95899fb7f081035b0c4217c2903688ca7e4466e66ac4e3ca938fd58b4d6bb732a36aa8e097fd75976d1200d61a5c988c12702698b1cfcbd93157d3d1c6e76d316b00b4e462588bbf3c480d8374df3cf66a16f9dd2ab721954e02a9f8eea4380c381da230f10c2c7dec02b057177e157cbd5304ab1d8160a323fd5892fe1649c2e270dbd3777035912dc0802f4d18a56356b52946f30c516838028f7f39cc22466ed277a5adb6864972e1063b1af0709dfd60136b16a3d6c863a68895677c488eb1d879a69a5341a695212066ab848609cbe331704aa56092a4204a2293e77935390cb1d2b2924e0bb27d4aa471474fed2b6982b71a1c14b2cd3ae12b12d5d12919235caeb8aa3827c844bda40f5f57e5f59c75c86b645224b3a861eb9d9773b01cbba45122bfb1e4a60ada0fc10f133c546563661064adbf4a89117657366789cfc282f9bbdd0547029c92aced02963f8cf462326db19bdc980149ee0823ecb1d9e22a5effc6cb588b17da70789d813b749be180457e82a5c958b069551748e12bae79cbc0dfb5ecccc85f565c22eea1836b52435b023959b4f4fc12956a09f38d58836891c4c2b0b4502b012b868fb9bc0455c12e83c182f1637c05469708279b1f4af2c275e174ca5ed0a12b39849f49535b8ca73089acd5067b6b57297327c4cdddc7d5c752a5d2cb04c659d04f803c72507f5832e7bd528e903863b932d80c51e8b2833684a084c7100728ca33a4304c85b8cf7b61412e76373566c34a75ca88004cab21a3274bca1ebcbf34222e351a3df4b557f09904173065b460d54210511f4515180b3bc0a87f9125a0a91252c1146101738f8f11e10897f9b1b16cc7c57ddfb3e4f6b01ad6239982baa07c56c05827e838c1b4bc99f9cc40608e74ed2d123757aca9d8030a0857ee2676db47bbcb1e10badb32508b87aac4c066fc747ad09a52177b378fc1446ea5aefcc30b0d744d2240e5e94c6f12254945223aa93abd8e71fe926a4fafa2a49273d618a0a5921cbde9c6f9648c6c12bad96d080e39ba128464d8f496b7cb020ebb03fbb2850a7118a7edb1bdc438565ca33850c1b1bfa6be29b88bcbcbb3e6675924550a7427035f60000841603c2b4c9f22040f9205c9386cd1b457046b4fb1521e4fcc47c1a0e7fe072bda26946762167d8bddba8c6d04470a2705fc05a6b00c4cc54409499a4859c4148b2a7596c8c7b2e597f0912742794495491117fec96486035f270363fb88511f756238ac9faf98251ecc06e1495337529b209031c0008e4250f550c3d476352ab82c8ef41c4b8203caab3b81335613016cb71b6a1f2c9b71158526cda75d9057c7597099789782b05164d338593b0a9b5ec85e0e6263c6a54d5a06ab4caa6c8db5b40e099f0ec7c00628373c3189e6c129b76827d160783f183ee14151b3b92e72bc4c65a06296a88b9f75948a18d50f53381f59360a19daba36939c3af104362d725c62f51b72ba1c8526c0be6a36930e19de18c2b1e470136cb7f92d246dc45992879b3762c92da6b97c10a552ff7a8b56788985814d2f9c5cd316dde3b2c7329b42f7492917c9174552219719575196844144a04a0b6718158cefc7833a421016b5193a5b965eb7b689698d14a41c03a408f8713aa46a077eac06a6106796c64b67117acd1bc0220125f4408222159503864eaa8824626c5651959d0f4c250c0002ec513c0817a47927ed99467c1eb6091f91773495d70084a7c344f41e0967925734ad846d360bc2a73c96f754b065112f1f472fcfb331eb8a286bc69cc1486d58b2d4932086f40c90ec601035c3016985962da0ca3571f5f36791a466861527a1ea52dc5a6254303971ce841d165985e2c02ec5b6a92278106117fcb377ad2c6c48bb24899a519626c74da9a3b026623417156aeebadabd418a0a8bc0bec5b43316ba7d7c4145016ca515ae19932a50819ce609b9ee9997c29a9af03a05ae9aaa89aa03b4ac5ca887b7b05a14d283a42da27ed7187369b0108165ef403550c99cad5c3cf7e28bef8a83ac8867341b331c9c02176520e0555af9b8047b3753e1928c849a13900545ba7a5c16bb9b6c689102aeb73eac0c5aa093a1f92810472c29642cd2a549a32bb9029961f6c4a20876ba8f4ab5212539f543c9d247355a300467b5a0a9d130613549d17a185fd045495f06820684c86aaa18a89317ea34eb0923d5600146497729fca9a66e9a544a55c1aa6841c556cdfe7ac0959635281c54e044c025c5b466442f15655474928c617a646c7178bf5b679062ceada6c6d702c22d339e0d3a9563a252e36287fc7975725bbc1a68122f4579a34c9c84318b13a76254c6be35a1ac3b26a8c2b373c6378cc20a7de414924a38ae7e8423fa1a66367a14b198f9980aeef068f346b208aecb13d827b3b5ac088878548171451109ce1535eb0a18ed1c1c677f9ca7f60501e1986ac19764849633c408d476540d6290738633a2e711eddc883ecb5111ce01bdbaa3df0f381facb31389249e261786f79aab0a80992b9a74002c9a7432fe88243f4276599389ce8119b846a75dcaa8eb300a7cfe266bbcb3742bc1e4dca77b986be341a03a75644dda25805bc50818a05a8495fb351c0709a5c37a07759dc0c3a253a3c56740aa8095d402bc65554880c2919dc6375451be6186d18da30c2f35ee4f1abfdbc594ea6ac5799c1d9912fb173044ad995d675751294489be7674d84181f4aaeacd9951dd0be79b919e585560d0b090b750f2f667e2ea21e283577e3aa4f6b11ad2560212f8309fad233ef87c6fa37480217a7b3933147daa29d2642cd582a3ac96ce5026135d5376a586f4604a8d511bcf5d09dd3e895fc3cb7d90a2535a1c31da1b1df5562e1b2a86a116212ab10a6328d2b80921c3c04ca9a4a9424bcc3a75e649ab34481561eb0a0920b71c245c1789770df5a7fc9136d4b573b227614dee4b23276af4b6c3537bcca67b59afa0119e668c910060e04e7c94a1a7fe0e191fe22cc727d12dc6d0000000000000000000000000000000000000000000000000000002d1ca62c220d1a0581d585ab445c7e001ad9056b3d6a44c8f563f136088de171d48790195fff2c19f221b7cd8637576cec18c29a4a51cd07c82eed4974c36e8c
ciphertext: d4952da07911c8ceb643e6b3254f7fcc22242a88df735c9aa9a91fc692f32544b7f30fefed3311dc8a927930c50b17577573f858b778294929b123b180498c22c1ddc92a11cda9c0da3cf300664feda28bff6f1873a682451d24e2c2a5991fa8aa29718a43c2b379ebc7387fad5dc9e3681d233641d1b805b167ae52631b3b6ebb0aaaa6507d4a87a808a1c3b62c97da49c02dfa2c729693de194a1bb1643fff14e0fd8d3749ad33936e8b4f8f6f3106c08a8098c6b903d1cb70c2636571253564fb7dbe54b96b1f999749d0c81c698934756b455bc6ec918ec267b5e54a0a812c62de971d8ccd93e4c1d6752afe3d5308c5257abed2b1c01d0489bc1d5fb5b2f4b199cfec784b2bf92dc85904cf78a9a6c0fc3a9c5c1640f905fb8fee2e08b3c0d5fa029062a5d41c82c512ab0645e7a1d728e7fdbcd95ec59d121fe876b1e6d624dba73cf68f35b23bfff7a435a5afc81947587b60d588c54ba0c999242830e568c3269bc96e001a99edb6ccef086abec634d0febbbaf72d872eae8c5606e86d9bbe279395c5370647f245351ae41358cc26f5447c37f959396dbb03e484c80dfcfdf93701e849e081232e85eb15e034b5421dc63c62190ea54a83ae06c89f395f7cef8eaa41517345a3a0aae4705529d3c2c13f71418817287c860f062c6d0c5ee918c50e613164dfd241533dd08928fc695f3b3c45cd75c740f76f6a896cceaafc9afd64deb69db89cdbd589fd6987b1f5da8b5b9115d675d3ab6cabcd0f793f00418c97b673fa31b851c1209140f76492359f3580c0e4de09d2a3efb2b3dd4afd4abde0e97180b7b24a45063f07f82771991fd2da92e12de7a868e6e84dca6a318dd8ef3a1ae6420d63051306d0582b058b7a96f25766aa0d863059483e9c7a17748a268e896f0d02173606e4381b639b480fbf0b3541a7c1790e66810e064cdc9d4e176cadf3d64ac27648467cd0b8643ad1255347cb6b086788f6c4dcfb3363cfef54c3ba5c13562ce884b53b09e6f149a60e1fbb35b65261406ec04f4146b2de7c61c2fdcf0f714981308774af933b710d1d4f315feefa97a581a98dd083a4d31749e5d0af2ccc2109cb739f8bfe85e4e7844dc3907959ff3c04ab9edebf3317f354c5e0aabe4de2e0711ee771b8dd70a3008eb9936f8b6924ec0dc9897a801e00f6738ec7f31cef0db9608d2c3d3683e97befb02f0ecff93068a46e57c97201608756dc45ca8bad93e0f562f5d74790c87d4ffaa67613b89c22339115d7499a2fd038bc4533e46bfb5eef28b06b8fe9a3182c6a8b18286edd1b57adeb55bacebf7c842d527ff5024c0ffabbf78eeb956a5127555894ca8459d99df31fc0fd1e1c5f7050d2cfb427dbb2f67530e049e23f8310b88c39d25dacbd6c7dccb9e382b0b471980d54974adcdb082825a9d6325cbaf90030a58193d5ef0a4e1e8fc885f04329253408b4de1d25acd097ff10e0afb4ff344063edde277e49b18996cfa57a7617b395a54731052a95a3cced450d38a31f19811ba278c60097aa1e3c91e87c57486b23ccb07d687c48fbaef4e814f9500b1e6f679a749614c86197239936be1f7ad2290b9a421c4f2fdbd4178a75cbb9cb1f7eddaad9d369f79c0e383fc9ccbbfd5e4cb93b211c477cac2786395e92385a4c0815d0ff6849e961395eba07c86e698d5f62466492efdbc326ff7c955840ed2877919d1cf95cdf5f557ad069363caa905c97471c85c5d0e65cea1ca90df82a0f8ef5660f68191c1aa19a180d18ef4a7b0dde8250ff3ff0a97dd4d65c3faf1e3a426f6c4b64f1f2d65ce9c5e5921ac20197a00f2331e810acf4f6b71878f1b785a28970d844ab4b6d1a604824db09f15e96bb711389114a4680b1c8b19be73aa5b039116c7a7cb7d2c2b026f5847afd6d2ac804f4ca24554f5ab27db900a159579efd23d78cf5542a038744cd6bdd64a3b59d233b878b383bc0ef38a0a2a8ab60869b64634df1cfdf3b53a367d3bfbbfb741badc819cb01823a8e8e16f6b4a35c380f99cd45af0edabf9de4fe2e5b0e6c34f7dce2c8d9a4be2b2b8951c27080aa965ae3afc422ddbefe0da8f766c8c63823050d1ba055e42352d305385ab932f99c0309dfa8d6362ec1c07e33909ac63200787f5963653db6ba2994cf308c9763a153b6ba824fb8ee94bd6a38f2a12047f7e0b01d090aaa41b4acce8396c18aece73cce364a7e6d9d
result: pass
shared_secret: bd452a700448a4542a31dcddcd0bf285610aca6570d8bc85e20e163a13db5663
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: cc4a14e75a6b1bf87f11a240424645dee23657db9819ac274780c2d7d8ac64f2cb82530b40a078791a2ae70aba868253bdc3045b6254c4e29024894cd13723edc7461a37403609b48f79b8e8b1018981bca9f68031dcaf87528a6b065d8cb83c142ba20d68a728a3866ca88e6836cab209ab49bb234312916e432fa51152c763a62cc53da61480691b07a073be74aa6c2b88468bca8302a23d1d6405ddf4aec2f88ab055b18e2b1873862af6539ca83b1c270b6a563cbc7a220cdc8106e6e5595d63a26c0cb86ff11b48066721634b43b361b57a5b4ddb2967d232d34cb750026b362cbd20188260c6a856e9493ae09c462bc4c8663c7903112488b06b2a996dc6668e382e9cdc93e52a1a368b07d8388c9531afff0cc4c07ab423bac717dcc888e213e3a75d69a633f49745bab10f62592f59d53ef19b6a62f0b24216aaed9c91203b7ee65b9d097cc1e2676deeeb576ceb4fa4a867ab7310076a912a41292c658e8f75a98603612558352a5b7beb404fd2bb6de18c7ac838464b6399182536509624e1e25a7821b71edc57c35541cd115ec52c13a739c3de231ada741274272383cc78bc9869d37282f5980209543c92b76ddf99c3d45cb7409b5e44599b75412d8bd122460905c250a94dd4052c0b0a91c9a906aa3652180fba9212046b4f7ad14f7c304780d553f19487b8b7413de732ba1296b41a2d94983d4be93e540a4a4137a030629e97fa640c21ba5b7b5537a03a2a958ec3a888590a5c14a904dd74c83631264644cc6689a245f833530124f7d10e2596a8be227f270941faa75300bd731c145f781cce52247418595ef67c94a170676cda269e51c7ddbc63b6765b010aa061cc576696c84345c35c491d3e4626efc8b73dfcb481c11bbf8c79c6a3aa4e54c43a44141f5c35932486320567ce37adaf5241bfd8c44ec140d30823b58223b02742f3e2bf5864756d528ea36348c1c2293d8ca050b6307d71a20a036e0060697b58a0ada53eee5a6990a9cfe283436cd36a02dcb1a2b7200a267c3f133ea6423bc001baeca953515214e2766f066cae531212dd3551e22bbb1c705f21753ab60a70f364bf1949901d9a0415a36567614c1aba2dacf2c5435b4ee66193c5e461596719790aa792d5a09ac474343509ee36ca048751bd4b0c644b2b039b1320b2294df814b419c3ac55541be5cf4b93593aa4c099142de9e13699a40709d70070aba9227b6c14f216d434c9bc16112b8b4237f838340a5c317a618a91170709bae6a7c13cf96851f72a8761736c452df27758afa4b02fd55b3493b1bbf96dfc45ac743718978b7de8a017eca45dea633dbc417f856781c856c87516429127c6a3d335f162ace0982235ac79ba0ba68edbc1eafb9ed7a3597ca7a612a9bf3ef2b0d1d7c238e98714a434b8b08b35e3885e007501f9bc06e841921521d47999db3ac3937468a54b95b57a2bbe34aeb48ba57f0744021bc684456a8ed413b9192057eb77a5502dbc89c5964c0383b4c9034396da209279199ab5830abe9386b2e811c222a6ccb0cb23732a95676fd5c0376505943ef8bd67a95defe0af7cac395a743bdc3119b1a74771343bad21c53ec80cafd7548ae310293027d62960116a338d74bbaeac359ab3728e268abf75a8d30b118141bbc56670dc0c5b2d05c9c2f03952338170754e20287c99177c66b810f009002c244f213891c5b980aaa23d15f413d4a80160d24e692c450b68c8c43ac60256ad748ab6aa85aeac5c623d199928f88b04ac7bad2c1249c18fe1b867a02a353a112ef71368eee3210f7082f8b216c975070e9a1a27dc265698bfe4849611716d0fa1b1f9047e8b0905d184b1fdd863377353fae732a5d0388c3c6606a773360734c9ba915d49aa7d358263d7abce563afaf382976b2ca2e1328d4aacdfd78851eb143a1b81c21713442421bb1abf77ba25d4355dd10602ce06754dd9a77aca0e25b1260e994d0fe1b83088a5d385251ad5c6a54c45d93a7d1b25cfddc1612b8b30e753814b505524a5b0b26747645c9b636543ac7a871b6a7cd3865f1d8636cb5210ae9157b567b2ebd17fe3f59b73379d086348c9806848ac3ccc1547e8964f6a1c4b532787dc8620050b7e628274683b79e133969ae154da157bbbab159941484cda4108c84aeef56af6036a8efa3d74327dac2417e6fb05e2f1c178023b70214296c3ce65151248533f43a4b50826b181bcb51fbc54279397a6e50113635faca0cf7439be90867a4c548a9af0704da13d12c7549ebcbe5b279afc266fd83b9c4222b717b86fd4724cd0a35238abc2c3390695ab975bd38e0681b67bf86f36cc91af700277998ad3d700e6419105dbc952144561137711a0acaad546e76c66ab5722bae1cc110abdff7044b662beb6acac276317a7799f7ec6bc1282c87cb284006b3e74c361e5c6c8b899ad122880a1219102404fad458170f8aa3576750a9682c830c7c8796daef63042f3607c5c059ff98b7a093ebda2947b861f497202510a6a2cdbad3d7ba3b8da61f02671be3410549aaa9c3140635334f6b4385cf4105ce791db08b73f3ccebac9ad93f1c7abf6289721568d601c2cf5ae2e4690ae0c77b66134f3e1c33bf82771491da4d228ebbb7077312babb47e1262009457a3caf60f0e47145e29a3ec3b37a67b9b418625142937278c50344c05a0a606fe43c229749415064556a55dac28321be77a256637fe2b8dedbcbb02a29ae505c641b004f970b051e028d047cd152477db673875148b71434a80221166698c3cc589374634c06110320b0f249a3ec4856ffeb478979533be7a333eb144550939b00164b6b1b545905612dc24775ac2e4bbb531c6763f934121a8a8d804951b05c8f9c9237046245b422272288e333970f7469a78d543132055c8781ee308382398a7bff70f62b7357bb8093624a3ebe3169e957f3a33019fb0296ea1cebbb484e87b04eec76a3e29cb38b451816a8feba195dfe79e820591d7e73c50139e2beb847ef43e42ecad64b533ee3857dcb35413066c7eb19e8c1bcc42c9959c13ccc4bab6ac81b44346261ebc74af482e34f855e08916e0c1bf33861fb6d706c3a5c03bc62c6d97cba4174b2441a32ce47db7b8703452bc4693be69a4c539c6a6b744211598cb644209e84a711a05b9116574c7a222bf459305f10a68d4c48eb72ea16526ff7619e8391032685e244693ec24b30a257511e00ada5a69b6cb75c2983d53157fbd708fa1e54057757bfe6067d242cee6492a51098913a6b2bf888ccb280dd3cc48c6a95ceaa5a844338cf4985978929e9ed153819b97dbb944e18c0d7530a09cd420aa7ac5f5910325d02368c602d531289db188d30c6fba407f32c41e80133cea869b52e8091f701c3d7a7d4b317e9b0291f05a652165695130c6cb783b18ab1ffeba0f72d2c21cd9844f8ac2826267081a4315927d9ab6123fdb0193f723a3cc3738794f735b1a145b83189b71c597bd8248ba511b9463b9262c80790a09167720473fb77b1da2af8632ad793c10d1916868b99d2d23a06875769d7151c9a524aad51eb4f20bc58b4c572cab2642769fe444362533a04c7350b3c5eb418785e13e05b5459ca2c856b1b4e1b266e9677a27d29f6dca61a2776c92dc9290c04d77d7bc7cfaa8a31a581a623cd1c046a488080ffa8c13f66f4d262aba53cfcad64313c5c2fd838f88e903fd3c7da0942fbb3c84f4581457252e8248a75e185d4b5b64e0634b2ec5c5a088a6251c9c8c76837c95c066a565f9fcaf0cc76a79e1a20fb05a5bc1bcdef32deae76105c581319bad317b7991d062ba1761cf1accc2b969ece35274d7b6a3c8c79142c43b14772ad96fe2f296eca5c9aa4b68cf14c584792b1e4ba1132aab4de7788dd642e307a6b2476caaca69a1f7a3946404a440764e4446c20c216da5965c88bb9e09c165b93845c68a5674105884c46c601d35737649815de052cabbb31b39f95531286e08e64772213280ba64b6467d03ec43c5911854498656a831a366cbc256813d451153a3610e6979671ba7bb7ba41dc832a81885589974f8ebc2e57a1709eab2ae9931a09bc97d486839d6a16b29b7de642aaf1861c31b6ebe82891896b4e75b2360a776678aab892b81c5e2175eb588885b980ca02e9ae7bde1dc6346a13a5964c4391b4a3cc776d9311f0a9706c2c04584d05b58624906417eabc95738407ba197b2a14c6e4655396575b585f7c2a8b262cfc7c7d6f3a1fcbbb4356195b502ca7b278133614379176f3f4aaa49a040c7672cfada79ed5a2400dab4d050560d8a30c3e57ec6411988e941622c64b934833f9225daf42885a5b1f7909d65b5000000000000000000000000000000000000000000000000000000ab6452d0cdf5872a6a7d3c97f59f7d2be589eb4ccf832936a00151b5443fc707a9e4a0d3487b6714e18bcc9d1daeb3127164328a19d5cf60822f3fd37a24bbed
ciphertext: 021a27d9ee3c76b205152ced9c68003eedb09245954d50316a14a3e1d877bd9d6480d479265cf7a693e77b8761f11a09c1c30d2fa5f50497ae6a4d2afa3e61b0b7fb4b3504024763ac6c10fc2e6bc77dda7fd837ce115b84b1d0c749e8e4a961d3e7de1bf6b36741be282f9df710b46410df07191c3207dd9e74e8c4d43e3c75607966a1894e86caa95cba51a9c3289b00ad0fe59c034099b822654caec138a1b06635d1de59fd469ca3e928deb7873cc3dc2fe03aa4b5729f91b940f01ce83ae5aedac13d0a961cd9420584346346955780974ef21ccbe3208cb019f050fac0b80076b48ac6c0f3c2aa2dc3a13b914ce5343c7a140186728bb335a47515d361466c2d78f3fc6250f13a4d4fe6c8a587512700fd5272c9de73eb698045708e18b86d6b6692e3afa1b73e5ed55614dce4b8e71ba9dab03a246b1469c617f5bbf3e502632b060c7c17145ba7df290ec310661480de58a56cdab7a2e5a8e298746eb1b7b8703c5c650456c567056451e209148059a59af315540e448c0c6a7f48df9e22f373aca8be4df3bc9bda80e94a92634a612afdbfced39194e124c07748328698cc21f39de459b4cb08c6c73e80fcb6d0d86adbea470a207b0575f180ddc0d658d7ae66b2166cdecdee265a02e56bc4880797f0fe09c081788f5bb507db2406f37a2743a3c22ee0caa51ab62ceccaeaa9e189ae412f8dece857b0faaf61f81f2bd968d0f6c9048fca287f74d954e48ecf05806a695d06bfc66ed8b5297899dd4b3942424cec559c33ef0da1ca083e7eea98585f89003ae0ba98fb3f51becb80094ba0091f97b3a32c635a12308851e070f4a94502be51fc6f4e11bb7803cfbee43135c82bdd3bc82d58383636eee387d2c13c1866982d7c4f15f0be3bf5f87c8fa5d43daba703c73135ff3aafe4cec43abf9c1bcd16e56d6df85fc38dca4d09245677ed75b585722a9b20fd5ffe9d0436b3fb592ca6982ec2b96a8af589296b0b0ffcae14ec9027d4815bb9b933470a357d0afe5aba5010eb0d93a0fab2c28f84d7091e607505ecada258a551238a2ff68621bdf5ee1246c27d6e8673f1b785f7abc9b88310e3c1ca5e266f2c974d1c88a31e27a102330f924fb3713adccfd09c4415c1773c8da37e4e18ef274b00d462970873b54ad108f588c8bee6a7b4cce157109aa04ba0daefc9b5119b3ff9f70d4728574cb9f57573f41760248a8a8cdbbf7492083cfbf585c844f03ee2e08da4a08d04717b6244b63bbf80d0f4f0477f94de7ae6b2883388ba05b27ffe8a497541f012f16bd9ec50f64cd0d14e1a6c2be8c77ffd39d1d19ef402b46c0c41718ac406acb1b71fc044b1f93a4fe98fa8a0bbf09caf9dcfcbd8e8ecba42e4bbac9bb5de40f089b86ef71003b92a3fe385bfe603b098185d05f43819f8686b4f4e14a75463f2026baa66789edc52610ca8d3d5b11f10672c70c80effd7ba0352b2079de6910221ed21c487a7367cff076e84e1cd3ec625065d7a9b8ce4eed9d91c8a72b16a4a50d96b8a00921695a00167b53471e79aa445c656fc0d41da64d836ac21a34be767c514d1571e500fcea435d1a1d59a6d07140ee4d1a4014cfa8a6f0be9c334ebdea053c842a06124dfd165232c1a2ce63babadd8a56fd78ffbed64b63bac3b49e5af81c746253bcfdfd045deec785e0e272ef8c7151bcefdad6fa2bea962d621abd97f9b5cbf1eab792139d16b51e1f732326a5e02926817ed0bc4c6c4680e42e7d5847d6e0195c402e59290ce8a8f040a70980eac1a0bcd3867ddc0f2de9b204514011491c8dd63a371d331b2edb870e76e7ec5b27146a0097b969a6b157d00f66ce53b71598b71869063b9a29b23f3623837385571962ac29ac868301e2ec0643bf639b074c8a28f0a66acbd0ad77e5c86d01cabd8fddd77a4fce6185768566a6d98e679986aaf9978c49189a2ef1a218977f4d2c34c5027188d816cc918061ad13421be77fb910ee5aef5e159fb74169d7763b446e523470409c4fc4e76aa6d98f120013d4af284bb0a8e9eecff71b8544f9d3815062173ad6d4e9c4727cd6395bd3da54237501c73390cc5c48683d780efec478d2a15a40a5ffa3455f52c092993859fc8ff9c1ebb308ed03b5b88f6de341c3be3ddc96f695d68c1562b85806e162f1b07c5f10a1213f8d85f6b7d92e06d664cda2ddba47b93e2922d30c3bb110405fc7dd9213812
result: pass
shared_secret: 8d99392e447dbb7f7eefd329325bd71d1d984cfb01fd609c3283a84fdd0f0138
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: cca22002e0b84e0c0fa98c902c2a30f0d9303a411db91a26576834d4f1645c181bba750c42ab6bcf401739f83fe2a4a3aa1a3f5917418003aed863875fc044dbc99c70b27758389fdd3cce51d5a13b21afe1219f0bab5dc3b15952591e6f80068b30870ed644de082476e7b32d3a531ff8631914c7a5c106a5acbf8672ab4a304afb71b1672cb281438f0fdb1db0f52948e8b0a1422ba10ac5e0a480e87bb844072e7a134dcce36f27274775fc6a8bc611b2a33cf85a4820e18b47b24188030fcaaba998d84a68424c07f4503abb553ec33b4be2af3557aae2797649da014dd0264d00ce74431e46f8969276b24b359c6750c5bc15a6318c2d06898ec5f473380a68302a91eb562fe4f10596012e5efa83f4c55a19912978a6583e4a884e36af1b9367e69ab0566c3cd8c34eaea615f49c094bcbc63d52a21d74c02462cb0bb7c77cbaa03df988b60cba880771a7c179315a9f6ebc6e9b8c90bbf17f737508b1691ef1952363e9499b5007a9c84838c2a149478e4be76c0368a8220b9a3ac68ef6560dba6b3f68257b6719551d83c38f73654fb392af0c1c2517851fc160c343cf826aca2c5614726c774c758e1abaa9ac04ae0742799060970909cbc2f78ca739c71bf6528f0695ea6175a4ac13555c3bcb9920bca3a37d363ba622666e54a4e779cad5059612792d610257a689975fd664dc5081d5ac4586c60e99b9a2a17ac612e5a794ca4dc097a71f72bce02b4907d69d801a22fd7b88f9e4ab284076037a0f6ac803bd7b243b835e51873919d3b77de041bbdb9c2917338f0c42a54ba6f5539d60e827387a9e7c156155d693b85701b53278139b29858785cb59788ed981d77556d27390285bc3f9408cbdc717895815d31641d0c31f2d911515f36743c40f4f3517432c620892149b518fecc80cd2d14c99730e0c940dec155930dcb5ef861b7c80b55c2223f7066b625c9fe5f0cb04f0bcb880119de142ce511affc01d483ac8db8b73e504b242315533d9c02cb64d15445fe32bb0c8e19383f82854981a9ea465b05c77cfd66d97a2b262bb37398cb4654a0fc8146c00b7608f061a216b9becec17f686b93d88309a7ac04c2447030b41ebc6a95fc52466d36dfd461bb046172f3b83fd10bf79c281202a60aed8467748a986100b97742c8d70c8de523c1d700489c391096c1b92654064cb7e35d7b25f29818ff39fa523c88bd69b8cf41689a414288c492f2a83f7b34a4d95770e6144b7731057c73a077a471e7b378fa48464c426ce5a6566e7c862131ebd5a1b3df013641a878fd702d167ae3f369361666514d98f325679c22aaddb56406e148e744960ee1395866acbe095542a6836571959a80238d037260fa053a52cbbc2cbc035e78fa9c306ebcb61ce33422584009271835ac3845524794f18bd7e1b4c034832fe68ba24a162815404f65c0af0944c9789b1d92767268c801a0444fff50399b3a192131e965523bbc2c75c286c96450c3f0733458bad7831205b1b4841a617626b4bee232cd1f220edf53b59bc213a055d956591fc3518a1974582f79a66dc8892ba71ccf7a5fae1c01841428525c32dd2b433445118559cb5447e3c851a0cb498cf99c2d359999fa3969fec41d1311ed2545f5281a09df223bc4918e55551ec060dbfeb41c777c79acb7375215002d9afa37b5a126625f7445c3fb51233650037e070648c924586bf7013c203e907332901ff722c35c1991acb2da41cacad4b709ee242a9e71eeb0ca1d05595fcea8d175553ce689ba595b8f98707a68a4d20f8a1fca8c34c3482e88c8b043a9d42e4a9e55a6cdd867e106b271031355bdc71c85c80713c0ef7c3ba3bbb9ad4e32615a2b104e52dc5e7481e258351385f9c8932a074529e327e6c0949756b57ef47094e184517819d459bbe35ac6154a70d004490b03803e58c9bbcdcbcd8451c2b0373656373be77a59beb2d47410d8a8631745653a02956dd0a0fe99ca87d78c273230667f25bddf3a65a216921a12844b8c98c197026e14638a97fa5144b44189621f00c75857fca20342a09ac44a4aa6c336d9ae58a15972f22555139e2b3e00ac0bf67b15d64ca8ae77a79b44e5b47a72ea06930aa9695b96987aa0dfbe63d83a352c9370247f6b21f225e096480b17333009bb78582464130612970cafb137f0e7c060db72de03a46d8a860b0cb2a45b462e5530eb566bcddda2315a633ae5054957cb74df537c30777a547b0c6e486787c74c3d242ee34158b212f4fe4107885b2d3da2224803e73bb282cdc8ca0365eb70751c3263531b31dae5a29561316003b2d781790cdc2ca09b65ed19995765263f06c8a1f3378d46c19b1b46a43932952a37e4c828e99f95404075b013b7471070422fc65f9c9965a1c0cd0141472fc7004f6319b548c19929f792ca0d588208ba4628cf2bbf7377ddac05a058308b7fb92cf55584a381204523a460310bba06a88d4b69cf62fe2a71097461a8c3b5eb212337887a34fcb278c59931f28a0000227d9cb9b1b3753dafa63e893c9783764bd01b7f668b83cea1e7fd94913a405babb301ffb6b57b2845cb7cd929c0acc7540e1bcb196679380822c7bb67f732a3c9ca778b60451fb03755ba151e6b0bacd1129df5174ebca123805beb8e91b840b70643713272ccbcc2b80008a46b3a818ccfa6ece2c3364f373fc8c10ef4b4c95955052f99202362bc3020cc2528486784784095fbe10b4a44732a2c6c0b2b50d199a93c544a00980baa2f5cbcc6a3456eab71c2798d04c9a85827b8b654c962b7e4125cfc0f82a59632462d656b9b96188cc89373a6165c287bc890d5ed9500ed08ec1f2822d718bb94525ce81cb48b4999e288b5c90bb7e3647ab26a7f5479199f9198fc950948605b9aa0c8d0b133851abe4d77aed7455b70410b54a00bdaa166f0b4712e3916a70846840c8f3f9c80c8a95c912bfef188782974eb372795d96cccfb6c9209cc2cbec64bcd064e238608ea46f841ac02d6aba8ba9bb251a381777b50570a5c79257a964190e56aba3b27c708803a2e6909a6920f546c509a7524d138a9c2c839f34a6a814b10ba4642b7214e447844d553532804154b36f688715b203cd576274445c98abc60192f603d970c988b42d6cc250b4349f2d91b50c123875c608c932a7f85bae2cd54b6de80be13914f2606cdd9b03ed83219ae5623748972a657e0ccc41579b745b3abf6b04b50b945f2f2963504bae804a261254ceedb767e252c64908abeb94669a94cf511b992c475d99939095ab9b19f74f75d30efd58beec598352108e1ca648b5f31bc7071c86aa97c5fcb60bba8884a3c72414916bf68a277a82b78857de531611ab7c7a111a632a64704458dac97dee2442b4b05a378baa74f34154bc8c191591eb2196a4d3174c3848b5f02f2351211f605b2608c9fd8a101b658599b87c65a3c2c7a266c02b3b8beab84feb0071c25a50b23ec8acb1daa290cca2ad6fbc8280c5cadac42993c083a25338150231cd134548661d645c678bcbc0e7815da41a14e8eb123c482e2831a1ab0399ce02cfa1a39a41c714bd8c9206d6c8c922043a235cae2bb6dd1ac430e22947444ded7447e00a51c13308365aaaf4da9dec03495c73295aa9259d4529eafb67dce58b374066796983f06c91d034226aa75afed116c886927e135564e4000cd86016346b56d9864c7abc6211a72cdbcd32fa869cab01f1da8f6bcb84cf1441781c6baa263ea684cf96a1277e2459ea07c6071b06093985b047b791ab6e6593be230099308a79376bbbcd71492a4a4de83a4d70c290aa05b74a8c80fdfb9293317d10e07615acc85d762ae35b187c55060c912d9a2a09e995afeadb874a5526cef75fa4701e9e0a5c082b92ed3b8887f0bcca362b492369881373ab878d00054027c4cef0c07cae57b30fc51e744653316591b5845c0a47492378764769cf3846b263ca6e086835cf0197b5025b2a960097e57597327f28d4b2fbc6bb241863a2c96d3242a031171042fb40afe8a75cc2976903a603b96019f4c7420b77625470b62287e03239e5008c1297888f5322937457b9467e52937996157e50764537ca495ac75fbff53dc1e8cb77002aa7988604b0829976c8e49649f7446495a7548227ce61d963da3bbd2705a8dfc73f091c20e72b77f6640a14aaa30134a1b3fa7083a50cbc720bc9a802a4208568e2a2ab065db245628ef2a138ca1d71fb3f66d6a8aee513f1c80b64a0bf38f01f4979a975054dfca823c4165aeb1876a7a81fd6920974b516d6b3a1aa71776a264a32447240855b84ba0fa1d35f07a8c11361040da933c4c44e88417b585c1a1605c68ce4000000000000000000000000000000000000000000000000000000c07898c8f447decd9bbfef0871a28f3bcaa4eb22ae145d00ea63a463ed3333c253f53a49ff45b0ae588d417a63a599670cd391c5e9885c972593d09350bd7523
ciphertext: 6899d650581d8ddd73d6e7095d24e2962ac573877204768c66a78047649ffd373d4e0cac20e0b98675e6f50962871c33957b5a7ba2af2ab800ad728c2d0e70877cc3f459ba53d432d45f4c9ff4c951c35f14185e01a1fbd735fc3ed84063b579e69c230f41af67c9cd7481fea81ed64bf248c63f56f81115ad8255a172fc99d87d8fdd6db00ee407618c7877a2486b6fac3b8eb7bea62c24bb5c5655e47388f2108ac36d5e55c5511d72bbba65706ffdf297cd0788b4c34ead564e86e78c605359b6b344380a4ec73a4f64b7866a2eaf36a494c76adba39158a3d1d3b41973cad055780ce211982fee596ba61e5e5f7e44cdd8b1d6f866c708d20403760b9fd4abf31a0573afa130aab5bf7493b2365ef5437b7824366fb3ec967016e2da547eb61276be7c5509c2bd5e16d8812c034f6b4c5a7f5f489137385ad5697c4312042303a5d7f62e398bf5fcc758ec1475e7ba671c656911bcc32ddedfdb07252ecd0eeea696046e3fc9e564b2ffca11562191c4a1e4b31d9494961fb66ad44f24c4b0d8d7422df106663600ba380baf53007b6146c923412228936d7324a87050e62b185bf3700959e262fc64bc4f2b55402d57c63539c57272240f4725ea23d389b17d6af64e864ce3429c9c0514c9b384d79b830a9c6fe12f8781755d53b8af9bf81e4784d9780ba6ba0ae36f89a99289307481bb3955075057648129349f1e0ce4e750be53372f82c92230127280f0f393150c89715a43eaac8abf538a031155661b489b066e915505d59ba40cc0b5a4b8de7e731533fd06dda44e65f22b7931c4b8e34a72331d32798aee1c16d81e06eeef892e7858ed2e9c27d21a3030567e40a369e21c925a26712e1ad6344474bf8e9539027040eb4b0cf65b627623ddf81253c6cf002f837673d2389cd296f9abfcd38a36c6976b03432c9100c7ce9bc862d2c98a6dc2f931f62e471369bbfab644f8ae37deb65784e6f5414bf88cba9e6836d3fa3c0ab7ceddd81d31e94c612224270fe79048688b6d8d46acc7d656a647888a469fdfb6ef8c8daf78a2270c5058e9b87d2fc0e4f8a098c1cebf96e06ff1edb382e545387b2314b2f7d4a669dff20122a0165c285258a39e2a1d27c5eac3d79ce0cdc64dff98a8633882db588a34b93a1403f6a739bd056cd2d6531af36a2701acf47617024cd1cd4b9b60a02cdfcc6f34e4693eba3bfb32780c573b4482a5f6bf109c7ee51792252dc119a5e41a4ea8f25557b64e500a83a6d8a839c456775a9ccb906a733391605bc487bbd6ea7272325df31cce2093649fa8a379f4977801240ea2be8b1e6a5ac95ba613bb2798bfd1cedfc34c39e1c43cc094f8bff34607f8419bc3ef2fc0c37075dc49280656304d2f642c5ffe86d5cdea4fe96cc8b4451954e5d898f6cdf7e7ec5af447dbda66a254b964df9e8dd565d46cdf04dd2d19ea1c7400925be2105e45343baa9855c5236dd70e042d0153c904d30fe45d087b0f0863ec603ad74baf1836b18c91d98455f3e6477936dba7379a6072744be6d4c64bca89ac3334ba727e0763f0ea52faff3daa52de9fad1f27e566e7a6e85914a02bdec5f7a8509f80a616f6ed66848d4ce8920757fb7611ee7c70366ce847fcb62a94452dd2523daa21c759f36cd31337afe1a5c8e8ce8799c6f03873f58bac3649e0d0fe6adea0199ef6eed64dd1e2fe0bc606b97ec8ed1e0b567baec2816273b7280ac91b05fb25e7467e934bf79025f5b4060a813c221291cb307f7783d5877987124ecab1d9d8c8e36c10608871a92e8878220f593cbd4ba61c35d2805500cdc0b145cd6ad2cd614481edbc913733e3a5104b0006dd26e871df58f32047701b2420d93bdc2d0a2474f7d9927e7f196993d9792e30cdff67ae89bc6a27236a6f0ce0439d4b04788765943c2be5c9fbc0f139135ded84ce79d876eeb37f30371194c8eba42659c185a10c8941f9fe9fcc722183ba7e22a7885a66d8cd10f214f4534171e0836d86368cd04d87737923da8801166afb398bb345b5bee89eb512cbae07f192aa50a932a5d92e909e65443f4004fca49de5eb19abedbf57d066d134e096e7c63defe4430f8e1886bdd3cfb8077f7196584398589ced5670c7be91d715a20f51603db8ef35724805eb1c270cf16b282ce7c79111e4577a0a1a27a435c070d6b3e89dce1bdb53826fe9a05d86e586ecd950d27247ceec6d
result: pass
shared_secret: 71e358b21b3b98d915b70e9b877e94159aabe9df32737c71c50c2f99d7a074e3
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 16997ff80976d1506b23c012e387ac6ca0a792f7481ac3c9775317ee3ca5267bc7180ca884d28bad6b5a05b045f33a9b975c6c98908d670550b874ca70a77424e48bf097256434b9d9b96c8b8149f02ba5bde9b813eb2b60f20da4440b4cfb05716bbfd86255a1e82941d2816caa7253e7368a4bbf4bf546f40b1bafc65bb994c34f7337e82818021797a431cfc664699bc22b92561fe3d1cd6306b89a36380920abbb466477549d1bf14364221c10f51fc3f7240de4c99b3bb3eeb9ac1fe12bb7c97888e8386da4a341a0be8f78a7b7c49f2184376c3c3784289a6bd9b6a03a110c228f72939b86c7a87dab3e093c0ade693a0e5331c48b761b070476f55cc45ba1dda14dfde01a011776143a4d29d48b47b0c6cd2111bf18360a7438f384a28d772177f648773b961a86637c946d7981a6b9f571a4c29aad07220fe081f1f18700f3c99ef28e76819f8d7c4c43d754cea21180c43357f3430bcbce1fe8952c691cfe9a7483026386a479eee4025a838df5c563b9f5a1882a2d7209a68d231ee82260a7eb4fc157936deab52618cba32772fa1440fb675220f4610d749a5b3b142f31b404d94d2bd816cc4773ec83aa1445a37b361e52b10960827e94171dce3c12cec80a1ec65aa6f117fe937673a78cd7767dadd3cebe0217f13c903ca25d6a681116b206acb46949b18f671a63fd2581a6c0978738460cc51df3711dc1215dcf75525d30559ab6bc52e16fa513753454888189348f045aee8a32e98cb2dfd708e7d42818115e5c61711a0c43e85a13657aadc24b5b30a04a43cb97bafa433204c18536337758c0db6154d4fac670fa3af148b52f24aa731c31f98464ca9bc975e97fd665710ee2c56b024fb8d7c7f4a20cc9d510f8eac38f96129c97b17c890417a21465d05abca02754ac3614e964f1a24393d05ccf5cb9500852cc9231656ca899f3538df30984475209f84ae8b99983e844b06ba4cd8a9640a513cee439ae13ad57d3846aea4fa165b68c6c03c05c835bcc5a63d45cc5568aef94ae7798bf29aa7f38e275c902236e63872a274e4776cf1928c492036166d04eed9ca64aa16ebb4b11fc3ba802c6b249e4b53f90112b587d36c6bfb0733a2ee3003419026a10a4c54c2be294b2031a48fe895c2c9920b3772f127338a865a82c3262dabac113c235d433b90d401f5557bb1bc68359020f75742c2008c2bc8862416910f53772a55376ef05a5eca853eb1ba5ef841f243b8d98b11e94483ad7e72fd7360a3641159e481ca50971a6e8aee73a0d4f24b25430ccc0997c631308fe2aaefcf79af5d2045932043d95933919b21ef87865b8550742a513d67af756c5958465f582983a777e9032ac43164e552358861a0ebc458e55865fc3545fd01b0e7565877ed3229f8267369c319abbb017a87ca662c635519ff418682af39ba387aa38ec37396b4d6ab505219314f4448d0f572f4330cf33fa1369872649c922bcd228c294b3213a216e59752072b8e026700ea63061855be3d6037c0cabe0c21f5be948ee4b18dd935ad358a5885a0331db2e496995bd47c3ff2b679e0abafc02804b6117271a2b00e33bc06250fb30ae2036716d30a50aa07e45f244e1f0100d74933a0cba383545cf629d357aa8927a7bd4f6575059485fd455be7198fc01a509920f6c0b8c5a565b4b86c084a60bd9b9b6037727df67b83ae06c5e47aba5d263ce83808f40a378aa43b4ec5458b33a0eac8c816abf5bf76a1220a99205258cc4a9236b4dc252cbbe8884e8ebc1fe921ed408582182b273a199d121153ec38b7f183174754f66332ca98b87a31672720815ff7bcd0cdac810db905ea76e6496742d26b2989b201fbc2936f5a6cd60c35e757f8c33b75277560ab948bab2962df9c38c91b44f08090e5585d852c4b729c52de88fd8c54722162f2d7696946c7b710079500136a28b9abf9a5c0294a5b265865cb04f9796b648f85858f8982f15c2bf31626b236b2c3a6493910be2cc8610829d96693cce3686b8a63b91439118fa661729462ce58e5e28b764aa39911569d1ca5c1b33885400a16f169858930c7f135ab6a95d08ccc70d057f9e73a4c8ca2da7185df37c8a6f727893bb6db74329cccc4692589128867cbaf28694fa747e86cf98619e99b221db88a81afa73b3485846e77cf311b99822a8fde459d7d01210db0ce68054199939e8156f8f7c33adf5bd5f2c54c6bc70054a5b8e305d526c1322e49f57c47264091e39eb0c72a596ad5575434c4de07c0bbac32f7ed30a0930221bba0aa75140b0c97a6e1775e1211740c23390f0094d144632169e4a0c2534479b85546a7fa65694610b2fc19488a5833aa7bd0ecbc6dee36997a900fad18b1c13b7cd381b1ca598038c2a4e40ac374615ffab46b3cc992df777eb0781aec573783b75cb426283ea01bdcbbdf8f8b30ce92f46cc7d4ce407bacbab2bfa27fd7792f43ac0ba74b58b332bb915be649a573eb22c12b6037b4a8cc109cb4495a337e42ac82c48dac2099684bd01700b7da007dd8039bd6b09900776cc783ca114358ada02cf5443c9bc6c181a6c86daa79371bf6e6c5cb68b7255d592796bb7b38c5f8c655b2e480cec127a2dd4aae4b23c44d4367de78e74797b64b0ce07a36e73613ddee8a61c5c32f865119f1a60b44ab5a28374af3324e68604bfb33962fc1f06d661119c0a081c45dea91190c4cad6b6253ce560d4e7855a64c58bc950bac88ce61b76691a93be4b81c202768c984ba2d9122cab4880942c40d87022b91c5ad817dcb5037b835dffd916a2b35c09f782ecb72cf63239b6c33bd73c0efd115357b283bd6512c1eb3ede4730284328a86021fa805ddc55c96c1caa3832857cacbeb5353453638ee70669c4dcb6a10c723b18c71dfc44fb5600c0f8cbb35c6d0b075335f6bec7ba1306766591575b5d2b4eba76a84e326b1475b5ece6c3ccea5e555616d38c03fe630c3ce56d3ad73858539d1718b915fa703996ce39745831b3c93e4829cc5677e5a79d3b1794f81816dcc2c5babc859b0966c76c23a4e66f1031634c93b8a51550d7850d5407b4e2d00ddfb5862c1c570b778042986f66ec940c5039dddba773c9a6a3c10e370714d0a4a43300a7b06b01aea6b6a4b5c17e7482d59bb9e1fb16897cc0340c5b65b9239d973c06d41f6e7b9f351a22b8eba6ac1148d91bb4f8959395e6a6ab996fc79bc8f0f7309be14fdb65bfb0287771908244033a3975ce2ec096abb9c15fb40d33a074fa2c84bdf7b1ee94746c42044be55484a179ec5c7edfecce56f9845f29c7c535282759c2d0a2546a13bf56dccc6d4463376a46ed05ba7f54577f26c78e2aaefb0928c36820db23a999e4b399b9b4fc864444d665e58ab24577533aca26acc5c512970c3a84bdd6fa7c7fca6c60eb73a1ab79db779c208c61a2f5311a694dcb7ba37ef7c7db92587d4a77fe3665036531d12c1adcd29cd2ab733e1b2d3ca56a2c7c9f7e3b96d6355b73c4bc4061ce276308b449cc0660b0f9c30fa4a62005f836e182a77e0b74d2b86e3bb6a63fb58d362b9496025bc5485a086808d3779ee28038d1939c5e39b645db160059a04e1b8e0e532686f29d34467fedb02236f3bb0b699c68726961f49824d277c8495c9d804a61f5320e61bc57a85bef199700d18a69e25331c41646abc434e6033d4abb30f114c35377365c51f5173769c315edf076e58710449763af61cc316b5a3e75346bba705db322cc683d5258a249a22524db0e88059a423c9b55d173eca88ed47cc4711a2ae295b846fb113834ab688bc2a42435258b9b1be648c5889230dc153273903e06aa2590ba5d77a63a16853d304933157288e03af785bbce36067c296a18cca79a18aefa33855683becd7b19b3890de40a24d6d389460a4a66378da2b82980e61ff0b144bfd64d0ce294e9816b9105c20c2076ddaa1026c68e50982cf79ba879f630d4eb8df663390307902207950b8b9db571c306a033272ac8976133a641c585d43e730a4969d752072bc6f180180e0ca0fd9c27d7845be15cbdbdd44c7c525fd70b5479c18a24800833c9338a5635034704db0443307c616209ab2172a0bc42c239d87ced11779625315ec168c3716ae62a209ed7096ecb83d7939593e519fff06e99a6a09122c5bf20c5bdc09af2402a3a605318d68c2b31a284b33b1719a4b6c7a5fbe4500ce23f7d858456f47d135a8256c9b40f52c37d07c728da600f127738c027d131b19b0070cbf9322d1865fa515471d461d17c424626b305d68e34838d5d7a35fb91816b65a1f9403771fc3a8f22403ca8616f89995b52425d618a63a789a0dcbb9ac196bd6612fb69000000000000000000000000000000000000000000000000000000e07f23404b053d03c5dcbfc340f9406bd010d254685ac2e204a32e68c7ac5afee366c059f5f26e6dfba8db203c5b27beca8fedd3de2664f6bd5c3e2ac9fb3891
ciphertext: 09ada15058fa9bf500eddb096fcd572a056beffdfce251252d0e9a8ae0300272e289f4f8868c1f4909b0502fba470989aefee80303e817862fb74080dbd7e872c05bd63162ada055a9f5dc88e9504ac344a517e613113f670c16415e2ebf5ecec2056620d4fd9b905a14a92d4a6af2d34a4aeb21ed9a98d498c25155559fc1b3046a5ea8c519bf320a8e2c0ebfe02cf28bfacb9a6a04c54130d93f1aa33af643d2620060bf578f525b1ece5464114e56c5d21692cb5243f763129a44deb9835f4851cbef64e0f97cc4ffb322c2f3863b26526153db89dca3f55d6727252de17c2021d3da9c1f9e3521f03844a066b047b318baa867c3201a1943c3a8245182f1d3a36b5e4beead76120470b2ef02b85ba13a1dcede19b5e4a7adf09d13e4f873fc5756a37f1ff240f6554683098437a9c374721088c0e0a390c435d8196d94ce94d988510fca6ead810a5da834f86f7bec0e41d83d35d1acae4205dc00a7a9b05779d41c893371bd000e308f70badf03e2f9066540fe2ad85f312db74fb48d054061c869f80bbf9f2c6c28fa691eaf8df27c7e13e076d8a793d7ef70d6cbb3afb059ba176888f569e73426765e4b866148729151dcd89753a68a2e1b76be36559dea6c7e4f8aac70a417698ac9d546f228ea36b01622cfb4405563a43e75c6baf2c626ff14b098ee33b1e9200d7b7fcd2cde35198b3332a3292f32bd1959132fa1510d8f1a43956b1d93820fb9dd88aa04597f65f86166033abd9ffdf9ce1ad4d8ad60d05f298c11f2816a0d375a9f8095aff0725905f508d20b11dd59b7145a101810ee140f86644827f31c64b2a7401048a8a5654934d6e5eb41d43a4957db61f341f5a214d2d09d4fa6fd2cf709264c4a755aeb0aa171a8286e94a354425d795780049f097b3c20ddb6cac39a78f8205f11c4744972263c1a495ab1fd563524f9822deb74a70df9ef5486ccf54e737fba48e3ee8d1c69ecd1c843fc38f4986f8fecfa42be99b056f24a2156a14d10998b4edb501f7edcb9df12bf1f235068b2961455f3513facfaac92d7d5093f00af6834d3e33c5f0271feb31edfa94bb3dcbd1221fe29095d6832f5a5155951dee6ba7a379f73854cf10ef5ad39b1730bb01e315a3c642321a52f4ea7efbd4519ba2192d974d445d6894feb9356a4c4b7512a0b1973568a04d7a45d7a4b0c73cc9df8147a2d0e31d2729c6091bd7a1c1985649795f2cb3b40f4df43e3bd7069683a737347bbca94239bd1e20badcbb702aefb93391c852108708db4949579eb495ada6840755a40fde96a009ed6acb54e98e0f4a084924ef15b25a917d497d25d9032a895a6ecae037af1d6e9f36ba56efc69fb893506a311f1f80b746c8ba0b8e08cb6c980c476a5982ce622e8d7394ddb0f6ba2c6dba68b7c5cd8aff2454dfc92362e82594123d9c200609d2372a7ce4df6e1b7ffa68df7b681c1d5174b3de4eec7d6f1321b13fbf4986b0c73ec6b9583229798801aae096bc5f972e1b3b07b0a40e1280070b2977d6e31aa8f4894d6dbc967a4d0b29c736ab33db11c172d9b771ffe84a8a803306a1b59d7fddf4975e6aef83375299d97d364a7629cf69ed856c689b09dde89fce7ff9e273bb72e768fd7d671d6591c6497f3da0eaee46feb58783f9d0495a62eaeca8e054038efbff4cc599529a9443b9496d1b0734eaa278121ce64d2a59c352b0ade0ffa907846a0ae8bdf02426f270293f1fc40f2b645089d621c18d11fac3d073afa27f20925039258e9d5530137f848d8e3e56f970d523544485cecd847dbc7fd8033f89c04a542f23a12e8e4bac7b9ecd76be797d8195b8f6f4e57b1b779ef41f03739175f1ac5e336fac71cab07f7dc760e4de2a3296c5acdb01dc5096f3f2de463980ab26e6d84b8a0754578de9b0a022281d6d1ae1a4ee40b781f49ed605a387b5176d685d1a29d3581eee4b1bcb050c2567e4f997330105e67f128c28577eee5ba1d170365cb81dafd7b218c8ad0207bcf00a38ea63ea404e3482a110fe16d0ddc8700e185670fc1df89ccc8a712df0c4f69c4db77390f72bb12dd627ba0159afa309e17e3538c313716f7d03a07998f941a7d4b8280975b2c353495747d1e115b770951ce5c924a8adc73eba6bf4146aec3dd27f828266fc3e1fc23f3b5c501404ec19c8030ad8b07d26aff71aef4bd7228728442325c5b880120e1c4492c1166cb27
result: pass
diff --git a/crypto/mlkem/mlkem1024_encap_tests.txt b/crypto/mlkem/mlkem1024_encap_tests.txt
index 8b7fd48..b6f396f 100644
--- a/crypto/mlkem/mlkem1024_encap_tests.txt
+++ b/crypto/mlkem/mlkem1024_encap_tests.txt
@@ -1769,70 +1769,70 @@
ciphertext: 6e78c7085b62594c22b881c61e63674892e8b15be6b3137030cf91834ac0126295c6893f0c386b7670821cbbcafac5d4211cfad5c1f75deb8e7df047b950fa504c189fcef6806e16c7a447187a7877ff91d5aa1f89d9f4c2f8c726dd7cbc688e247c929117e01c8cf93e62440ac3f9affd27ecfd76d525dde13ec8b3a6686e25cea8e46fdb3a264b4e1692bcb1cbfbf6e750a1faf99d8864c1a9beabe0d436b7ec5566c92be999b165ff4f30d6ba43347c326edf4a41ecf2d35cb825bafe62184cfc28b30419f509b631f9affdca2b3b78771fdfb006f5b6cca6d0f5522308543b4a1fc65463d8b0ef14fb3fdc160178692d598e59d71110447fec3d02a58556bd1d17d212bd09d4dcda359fc4ee60dd2f0c73db72ee684a28b550f6b17e7dc8e2bd1867076222033023851676c0a55956e14f2c67874217e5349918243011ace52437a127c1a743a52c7c6fd8a0a007d5d020ec1bfb9f98b0ae36561eadbb5e23b7202d909c7d5fad270542c2e57dd0a54fe7179050b7ca81d72fc8c4f07f45fb2ac905e209a3ced970bcf5334daf441a0ea8f250d41be94cc33d96a42a067654f43047cc500214d0a54920f61728b6e95a014926f03faa1b27f6f5cb4397347dd0744c09ad92608ed7cbc0bae29092d6846fbe0fa14a38529e00c165a7ba098c16e532d43a8e4bff1490c45e0a33bc02738b4a1958cebeb39fd30ed7026b3a015863c2e4a2ca00635475678132e7fc114fc8e891711241942b787384ee22352b2811cfe1a22fb7e8f2e173df93e59cfc98a677a136ec29bbd47bc66070a7a8fa3a709aed2123ce55bf27ff2d23eb87b9762659d16ced5e24b7e825e0b4c2e8a6b6cd1596e4fafc06c9e90a8f0137ad182662f54288da8b590d42c6fbf9bb14cc8f23fff1abcc5885ecccb580d93846b2ebec01bd528547765fa2c231dc1b5ec3b3263617d136a102f6e02458444b158162b80e9acd39ce90db232582ecfd679029c6ed4d5a17f28b4ef2a120455b5933b51d3751728ad07e9d1ae3dc52d690d5838cbfc8c8d5bd7284dca1b753be3cc485aff60a120eff28891e902af0ec3358785a0ac87f99f18f268d73c05ba725de2cbc82d2918f1694c3f6c813d02f341c9f40a7c75bcc5984d5ecc1cc308eb16a9c1971d4f8e6a8d5ba59e855656543c0c7e5b7e49a360bc31c9411da0642bb815703bb64fb550f19fbb0bb993453ab8f15ca9ebddae7ef5acf2910f130f95fe1e4ca602f7e09d605a4dddacdd3cf5c2830a7bd1fafa1d63f7cf4ad511303ce42fb6348397df469a813c822527b933747f8f419177caad0787b63570cdb807a35a190a46f2150fd19c18db91c9435908d79449b23430c1d26a7354b6b9d1d21f31d160e767681580c770bb264dcc24567e88a8bc6512831fba35cf6aa4fcac1040b200df1c60b88a3d7e1550f0a27e8232dd88a9c751624198f811ddbf1c2a833c58b91bab501e7cfccb5374c21482808be44877ed51389234f3bda65c44ab5781da9ee3269a0cd4a3f13f50ec1445c859fc164774cac725a3b561bd63a97170823fdc07bd6ecb46bcfcd76384e7baa0ec3c1f4c89215e26b580962502a4c06aa26068c041ff1354ee9ec07da71b163901784ef525c65bd00c403a9445ade4b0bddfc30e04d278b4873dbd1f18f4587cedf870d958b16be02ecdf3a5cc435b49e0e56775521579530013aea6a081aed4a5774bf72918526eb290a5bc1ef3f0ed9440863c1133a70b1481d46b6f0adb352b3cd4e50bba138570b8e5617e3a10b6382970ace312b95d87f5e8a6baea10d2ea19546acb5fcbac0d20e964b7c0bd0d1825d3955971bd657c316710066d81ccc421c786f7d21df4e748b47111732f1851dc992322d5b50cfcb66321b46588b39184c503666435d620eb03a3535b9611e7aac801e9cf90ecf7671f70eeec6103d6e00a2ca5a6a8424e645d4fa89b058b5f77441437e40bba596d705ba522fae5fb1240d9f9e25c9bcae741b514b9ff33d0132db5f06a73964f05dce8b41a568413bd7f4fc78a4c7dbd2f5815f3dff8f25b2e82a508f5f2fb02087bd23927707bc729574777e01ed0c93557867956d8493c1cd9dc86ef3c1e48986be905101578c8e7a11ea96709929e5dbb1560bd4d9f9acb7957355e09fad7c97712e890234b335fd950e25cf59a4ccc6cd461e6ffbbc43026faa7dcc6df33a8bc5f1dae7e5
shared_secret: 8918cd0c3eabdb8267e24b79272ab6b67c9ea6418cab15e2e3070f6c747b4dc4
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6
public_key = 9d76798256925e67ccd5ccac6d69a85343825b6a20793095e1a29d1b526e183611bad90cf6440bd3e79f847c6b912aa1919a9e7d9357b414cfccb206180067469b294b2c4233960a40e17800ab0ce483c40b653392488df837689fd72da0daae74575da747527b2a116984b2adccba04000ab72402f09c749341be42c79a5c8198488124fe750f66b82cf272826747c68a946d2629a48ce0a777b4a9673ba9c3a2a402305506f4b65b65b327e62de16c696bca3d0b8ca44013cc88d9444a83549af17a3f8270565359b168ca721027479a6e60a28f11b33d88da4faa084b576ba5bea09c2fa8a68c0aa8a309c96119aa52443bae570abbd942d193cc8ccab6e5643d0e362049f1ad00f98d173849afb1248ee2a67873950ec849e9b7042b94222b60bd50720b94d7317053cc86758cfc0bae9c9856c0c4411e74730fb65d8b7b838426123bf68b9804473469c6d8717dff450fcfa208b8f53e2cd8987919a5defbcda5a422ed82b495c67b46264106a613ec138097f05a2f2c5efc2076b9e2475ee162a5e7242cea1598088f8146bc8ea65909723fb7a60b1db157a4f43158457d2d157a1f980925a396401450b670728b2c7ca3aba3e7d4b4fd34b24caa87d45846bc2104e95a1d9a5676b734736fb00f7b3241160c2299b50e5517bd4faa859b79c8590c4322115a7c724f0767c056620bd006c01b5b87d80091bc483e5d341d14149095045d0648acabb46053e78c84045a9606bf82f6124fa9a8a9104ebaa734e3720eb6921553e353e66152f2e96adf34534a06aeeb677fc4f901bea148d28411f1f856b4d2cd261526e3a8139788796690413a50251dc1763703a42ee708f932cdeb9b7ecfb2c7d99002bb93cc248a133b9a4c8e910a045669ef5bc75113ce12f7963d665d6662246d383767f74317dbaaa3d0b855bb0274815442f0b66821cda6aab15672192d20c6aa8537432699ca8a22392a855323ad70f75979b56b392c29caf9c072885710c33967120aeef0bcfca1293df8181ce50dae21577701b1fa216dadf19fee4c35e0d435ffc83de3f92c2b276461b66398c75c98d92628b32a2ac3b571853c4a142bd5e81a8770c9d9359c91ac41aa2b4b063a9bcaf4592cb6626c213bc89c6eee3b75c59a21d6d748825b336f4052c6bb79f4ea13f51b672d1abb32887f1977505a75c13f0b66db14b56956050550ab0d85a814640dd3a36a825682c9cc6d6f13cf132780f5fcce87355007f9021ab5a5a3a69369c7876a5158654bc9f9400a1de60e71e34a370372f24cbc84166ee68b6433b6911a76bd78fa249e850bab6aa96ad820e0dcb438fbcfd9ea81f5f3c0d5d53653ba288815029202807aebb27402660e4b3cdb609bb7145dbc055fa146466b121e673359a8465073d99b63e799cafca95733938dfc2ad7d6007a36a8da027ad396618f1647b1287094737fe518b779f238b1ec0c9351b3c408b8f66b27f5262693826b24842a9153a9d205a7593665fc172c7c835354daaf90574686a8ca7fe5824ab94f29d6a5ac87cc40b999e5e7ade2744e1fe7048e38c804472579d93309986c28962b06e80d0952ab10d1cf1d945b99432ef5074dea9c6f4ed97959fc904e23a3834cc30de35f5350656d027a1e6620925a6840a337d14a82dd524c2077302fd6b72e97a959001d3d81768ccb7937f4aa07f00eef0aaeca877999e5598d30a81e920e2e8489970a31fdeb7d921474500835a01530e0177a44852cba38c3b0c297a0c5bc73db986d24cb0b323402d5355b543468f948976284dbcaa1c87c8b27cc62ce2b8306da3a5e08b0991403e7b0381adb0c897c7a994997a69ac1f5092f8edc480e77a82ae9bdedc724883b5eb3da56648979fd2337fb42aed861859aa6165a800d4c9b964e70195927359378073a84b80219613873a164324a04144c4a5b551937c23ac75e3a664a773966b512a01f3a7a60ec1ee06a068933a8ab0844511488f058b2c5bbc1c8dc07e32b267aeac8285543300bc66f8514ed6aac59cbb9be835b3ec68987a5cff5791643c60841da8c172c1ffc07110c77a43ab34621c474a60a385d153d79831922638740657030481146ca6843f6043cec1de4b0b307c52b288b98905b918bf3af0e698b4ea261db5895f7d02ea0fc59156090609764d09b4a7ed5000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 02c49972f757b82c1f5e7ff048b375cf05adac485075ca5a1eeadb615de1306d6712f0cfc452db395c57039fec57708d0a35b7bb238d1e4fd58301473cc4737d72ceab2b097d513ccd17a7f54d1fd145bc28aeaefd2157f2a8dbea391cffecfc2e1fb86c909b45e97a39b30ff59f176b2359a92cab56cf8d04ca42a08c70051c8d9405fa9aa2aaf5724d8b2a00528b7818671af4129c527bffa74702f02172bf51cb8e5b7c07438c785329807bd022fcb5aad5286642b1fbaf976af9816d3f0a3fdb79c2787f6abc1dd20fbb2995bc2a4b2408f5900c68a60f38f78037c3ddee01a3861433a7d9eeb5e7a41a56d2b2a11615d8ef8751d19cf7bc5e5e46b0944dfa61cee6dc16c490f5c7b62ebb6bd9bdca7dee23c3bf1529a4bf40977b307e945efb6451d4ae1c1aa507e30f653ef476c64610edb39201492434dcf36053f668b43746cda8fefd4316425c92f97e1900c62a91004405349c69497438aeecb876ab534220a4563138ceeb3d4edb0d70330ad031aa82dd62e19d17f62bf83dc3d4e2c3850d47efd50edbab06c9661d1ef274e856d8ae58564909625de2acf771334ffc3a3d7a0b1a382e8a17c1a1dc0f29401d9a3dd198a4ad70a740700301da40b468fc4232ae841489a1169170d5131d9b0a036149eedc23f2abba55883ffbfe4788c887e3248bc1de1b3677f286f1269d110d574d01199524d93263517afb76759bcc2728ac595b004508946618b55b0ca734431e85496f07e153f9707d876b6342cc99be864d9d603c645bb9731890d497d85d955e2d80e2e660c93968873eeca1a51157ceca558c0544040db61fb4ac4e20effdccdf950feb214971dde984cff17a75973b8d3a8cd27c92a8686fb93564def326e3cb617411892469be218d663a009c37e2d573b59beb4c5f62206f3a0df818608583e73d12366fcb1d685650d72ca4f533b928c0b4772ae645f0b0ad71bb8313a601723b8f90ffcc53dfcda9d092f8931ef168ca2f53d4600677833b9443fdc05db07f80c03bcf6e364fd4d85c89fab6a08cc9399b10afcb908cc4b6b6a3f6a4725bcf8de94e6515345e333a8324765ca69ddf9c61539d36c67e91ced0396ab2adc022ae9fa8e41d5a00168cd8c9ad0291f653af63e67b90ff2d448fdbb058702c551d323f5916ed90f6b87e354944e167887c5ea4b37703c8b0a94edf20d188ea989999deafe0a6de995434275b18d17a33b100032f2796749a385d972542dbc9989311068e84f3629bbb797f7c6f1057d99185009b5ac0d43d7b944b2e5f528cdb26ca14d995671e72eb725bf2de60289da1f06d78b137a79ebfb75425446c20b4310700053cf3ad58ce01cfb4d97325a27e5b5eda3cfe1009cdd186313ec3d16f005be47c8f38051cf2108b85ec43aa0d527b8d3bdae4e0a7a711c6fa69998bc26a9a8d2f7433f24f79c0dfc74a56083b42de7860b22c45f0c6e31422080c7a21c8d672fba60ce7652a90a3134f54594eb0fafe5a953e4f179ab06ea6b9795bc31a4f6a7f18bd5f1800a5263c48da4ad48ceca613fadea7741dff9d90f6400aa31519bef0b01e3312a5042ac35362df5e61c8e04eb52bf5bce0505ea7233b516321a08185fbdb9ff8434b4c6a88f880f594d100f46924a26f468c754d6af07f4868cbd7aff2caa53e5146df4afde9f7753484fa8be36baf89ebd4741b7260ff1ea398d59e503f5fd6c5c543ae1d318dc1894a48025c76e872fdc3026bf33a91b4618d1618554393eef6f7816b7de65c4bfbb55353cef9a53ad35340049ec65ad5af27db6fa597eae6499a3e5a192ed731915f6ffac811e35555ba5ffcb6628f812bf71a268620c161fe2a571921f5bceb4d0cdca776c7e52f68140845f455d247cad416c4de040bc37f5421e2b8bd6a049db84f0b3c807c3bb9d47cc7ac3ae9599ce82cebce8243306c0f3de6af1526475387c76751b7412a227571450599120570cf3cda19264136e0a93b4d25a160dee03d3d812dbf172618f58d09645becacb5c287b3b01ce4d1121272747648c50112c44728f66d86bd421390f2b36ed7e18b09a985a306ec52f240c0bc0957335483439f146b6c340f7e062a6059b1d47750c11cda575f8a2aea78ee09af0e06dbc2b2ac2b2bbef17fa108681dc90a7b970306522e521aa987e3ab6dfe2e1b3c6d9fa68897efc9e998afe55620cdbe9ddbbac8a0e22395d5628a
shared_secret: 6e63c5ca8af98628c02c8f1d520615a1a2c4824d5d155a6e51d181e8eb44c7fa
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 3983da6a4615805f6d55c14ba582d59a40e646c7ae77f4835a51afc6c37f11f3
public_key = 452bab83196c047889f7eb13897b3d73db6ecf5c9687c3a97d5b3fca3071a29cb82902c7a4e673f56842129c4e27254d50c2a9741abedcd925a62796d9a98733262e45366a5d7b81cf7c9b3c42a6b2f70626d0adde9311239061dd893669404058da8d209ba6a6825e796c84e765b348414447246f57acad8c933dcaf752ef268bd6246f6b57377cf82607a522dd7028b572319263c9a9805aa6501ca4ec2a182a25cb751ad6f0a0a23955986155e0a1b0957bb9afb35320da2b20e29210b2605122791db13adb91a0fed0b36bca7d6f03b0ca6c8597b56a189c10ee887b4429b0cda99d83728aa6f57a03d182685b2266ac1f70645b123c0ddf352520332fb5ea06e716b010f82c62858c0408446afb0ffe23ae9241be953b3d05a9087f8738143c3c66b5b3c61ba1240b99c2f50b620038d775706aa58cb0f7094d52c755b992e008c2419b3b4bd85a41f65bf633136867caf5872d551340f377c06546495b8882e4e14df8a958a501161c547146fa2132160fce98c830a5b42784cfec7410bfe87f185657a29508bf339c7871ab9de91423d23e90ca2bdddbacf7f4af0f616e9626a3ed4a87b9b900b2412b0b5328104479d33046f54a06cd88a3d0c9780af5807e3517e0c72d45b17106a136e68a49521364e8661636f250fb679d3fb649a0491d349a6bcb49a4e06552ec60b33f947e37fa11b6742ca9119f0c6953f8175deac4576292165f42110c99467b008f53e25308e560fc845df84b28eff321687c45d6d09d96533f1d0078af998a9db59cc51b1ed4ec6c13695fd33a768af521bc9c39bbf6c27c6266ba271e5d8cb89982077f553b1dfb5341b5caccb856a7608cfee57ad3dcbd782ababf70c4f825cbe1279b304c2cf134beb0268655951cd76079b06410737cc10550c16cb9848612b6b7652d4ca9bb5be64f08236b69a097cbd10014e561469b7a68723160d91632d67f4908622876a29c59682579b34a298cd01597887c1b4d100ea724ba3fc8960356b499825c5223585024a478d34561a98d0c23930473ad6da637666b454c7882f0a98254f41caee03e03067b3a001f303c651489c1d00a825537c2412826a73959f085c5d6a836836582d938b9d999b591019219c906f6712fdb52b13bb8708d0c570a00bc40f1168b80b9c11a4e72430943c2544e2bb910ca5c4f0b245f4bccf0f0c3a284757bc6c535c6a205b34cddc15abcd92dcee9717b413568b461e2b9035756a312414e2644422112b49a3a23eed98e07884c80a6291df38d5bb039df15b7d89b5021d691f1a165eab9242b34146f6b223195bff19c6c6197a5e424c59572502f69c7a8b633534786e4d8c1e280680361b8ab5657b74336d72571bcd12af7089d4a23c09a167d0a3bcc540b8be036b24664bdb3a13b62c11eee93c4ff5bc0bcd92f186741eaf56a5f6111f161b9158bae9691b8c99cbae21c9534da07d11930b96751e3c29a804195a18781e016b6af45bd23e8297759a1d1487c6212add88675cc3b92de46c09b4315c9a0cf6a5a20e7fa9ed5d594aa95cfa3681e42a3543429b9ec551e1e74ba46b79234b8c69c0b5f9553aa12455edd971ac29199c04a40d702128cb77f63d50f11184d2d0b66befa6adf7c2bed427c82a632a81497c3831e38256784802fb7195e40b571c26a925de84f6366b3d9aa2ecbe57ac61283f5ea3648b652f0c742b9d7c2a8c00ab5b611fd36458ec71f1c49579f96c1a774a3b4179ea63b4fd1e3b172b39eed1bbbf0d27aabd1befa0232440b336b53230bd60b88da4c116ac47b971de59a214a0752e75888172386ab2ba525ea50492a59467a57713985475108501cce687bca50b6c8840b03bf2a5072e8585f33625a9a8c17160fd7d630ba54c2dce9bc0ab2cae4965ddb9110ad612c65c8203e7b462ff86ba28abedb808f70818f022413ed5a9a3b0ba6aa24685fa91d5938a69693862e31aef5054af2f9849d3b1d22e121fec251c8f358a0d320efb9299df6194cf6cc5cf0c11363114abb8069e57634ba173ae199b080c1d935558c16696c97a5f316a4b8565c20b266802c60d4272e49c2a5ff794bbc914240f81317558a8cc862d9783630d90d99f6a68738219c44b9ad5c07b7242e85d71f2a958398e25047f494e7f6acfe339f98cc2d65c114a537b1259e000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 841dcaa46434e75228b0bc10733771ae67fdcbef99433463b2aaf2da88a98e1bbc748e1d14239a3a91bd2b6752b83302265c58d36f176b15988a3cdcc0f65cd72eb5486913269eb31b42bd0ccec456b72ff18f3801a1ad44c3ae6eebfaca59f2ee8308bd6c4c05a7262a01f168662dd42153bcf885ca7e84adfbaf6429bfacfde0ba36426b17dec09cee0591eca54dce505b6f23d2b674fba0a9dffdf7e77ee007e7570b31c71723047c3e8a271d6876261fc1766e1e468bbaec2a42960c2f0a3ebb7dc5d5d6d75a24245a375d160bfafb01cfa2c08831b1ccc67bf9d05df3a14d8f4b170e145311a793a92b1d59602e45328e58c5842dfa6d7021e1c65a900e0b04a79b17edec62c5d1c2bb8679174b45da0cfa336f7a0973923b8812d7b2015e73c42e1219900cfc3cdc93824b55724acaff2158d38732c429883b4d461b74a858cd167ba9e47f8157834f2e758cfc1c8f0fc5e762d56ead723cac0759cfe5233473b9706be8d909c1bfb2cdecbe7eb15b74b181e8fb949aba6b82e2c7c1d40bfc43cdc758051d1ad428a43bc7708ea9b46ea3f202974abf44644c7614769c9fb39de6ba9fb3009cff125fae0ebf0ecf5c9dea4ef2b9a8f26fc5d27d875e068ce3d319f816000f1dd560d03cccf97c5485ce65a77a326ed0fb2ece5cd5a55661c7b41f4b08486770cdc510f03b2b85c73b95d0d77b0aa75f677682d0a383a6e69ece0d5bd62568f2f50dd64ce3cd9e51556043323729b165e4c6726dc77c78025faef0653e54c6474834b9e2b51c66bfc8fe90e6e48fa217add307120ee0c00e8ac8988e5765e66dd0dfd92c80a3b19eaefb46585f0078f5f2de0b9c83ee10996b27b7c64d0f7b4d3be78ae18030bcd792e83bbf99529d1e7917bc053846268ded779a622e83f5d2fcfb0c15bdb1a2621188037acb8999ccae846ab2664792b043903c3e6b59c2645ca44e2b19cb21122035f7f3b222bf382800df1d1d8926eada144f880ecc739bb5644986f0a3c1b7cabcf3c9cbc7938802274ba459c1b870ddc516b5ea871fa6bd87b8cc5e47541f1dab3b9fd63865bb514b85155c41780b6ae24a02a06804a319d3f8d81383e7c8167853f3e24b35e220c105dfe14c33441f928c6dcf63a606500539b602f3b3f547a49545fa43f3fa6bbbd6049d9769ae5ac0964d00d68409abac87369f9608f2d244935aefce11e009fdc9a94c4a803eff45f989affe68c4dabbb291de0e7251a82bd5e5d19bc165fafa25465066e23dd905dd456e0d02ec3cf229c330d404b5f214a37363bd997979fd171584a296cab6e37928940f6bde0d1ed593903d86524449ad42248572680f1b573ede4ae27237e56755485657a5f542577700680308cea4a0d249e48138743017078e668e9ee556c7ef5a83cca9f96ca22beb7e30e2df1a793c6e2f402f109770ce7763eeb057f65bc0fec1fde8ccbeef1441dc98d059d1589564debb2a993ce21031c67d4d8c61ec53160be67aee11ff4b901bfd7c91f6e1faf7aa525aa8d15c3212ebdf0e3a5adc57690d446fcc9435caa5b1ed174b96d4da42851545ce1764bcae48c5fa580802eec2d1b83e4307c1da0dbb2a0fa414d2db8d6335f898fec5e391d0d7c2098e35dcd68afa8adc29d5eee9a9cc6a517ed310897e69eb23ce83e5ef0535c0f64d4f8d62a962e8af80f47a7f76cf735ae4ab09db0b806a9c4b2fa9ee493d69e73af045e6a1eb07b5bbd3241ccce8b5196080c2953cbc50a2052126ad754dc971050150d7ad4b319fd85cec8c4be05b55ddcd5ec7e804083278495b1601792464202969dbe01488f876d1655e0a3f4879ba41712c9136ba0f99d4bbf3145f34bd6f4edad036e6db0ba2532e35c6c097820d1fb069f9d69c259fb17b94970f2cc8284e5fd80f4e6070b4389bcb49ca99f207d002e44f6f0c9046fd89c0ddb1d86b01007c02920acafdf28e49d3c209e3bca054b67398b6c6c2561004c129947d87d33390d28489855074a6777dbf72816f0e1bf9488009bb0a247784c8a9b8f13a163d86a614edda8d205058071c12845b21e82ead309ede45872c379417c536ba446272ffb63d924d0055a92c320739d364e3eafcea6d10ee09a58a70c6c9a88550327070d6de72034b8140976856895147e2a1ab4ad062c7d299228a50b605872e3d20daea3e918f2dda9f8182aed61c93b4a47c5796478e182ba54c87fe
shared_secret: d0ffac51bd8b7e6192ac5954b26a5c64f4d0ea746b08d9f73602062aa8aaf7cd
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 2676b8426b9d6a30af007094bb76d65d388c2b3da938215dd6f6987206400e13
public_key = 04db6353d04f4a88b97b6aa5a6a42a101a535da323cae6c7dd757de67c24fc0c1dd894ba24c26c873172bf2c1ce63c56cb98189d60587cd76c2ff70cbea93a0d0767ff347a071333986226a8812677e2b5e18a15fc5b2d23bc03786b2faf8a9d2705bcb6276d2c140509f67a123a34a98bc879386b5a596b4fe77f0caa5145d766e05834658961a4aa3d5a90bf9da5a53ddac964e62216d0a6e39934f00c6ab988cfe6334a69480bfecbc7b100b621d471ab51725008a21f404142e489cc30cb1aec8dbf99038c8989ae8c477c198cefba1f3420951b660026c820fb406d19fb0878677cbb852bf5978d99d33f6fd7c3aad87585e68e5dd5a444a8369749ac03902b91000c0d986b26029005ac6daab8b0888a75b75bb667469525a70278945e2847cfcf242b420a10af98cdcab58417400b9d58b68f3670aec0ade93996a8e16d63337444d0b7de449f3ee63b30aabc9ac2b77d5bb13d672ce9db86770b9c21e11ca3f42c2117654c657da94c451c319e1139088d008179707eccd6a47d68677c692c9bc7790a6311dfc244d1c67eeb3420109404a86ba668e24c09b6308f3b09e546cb20db4117c74b4124946735ae70ec8147bb2e24784c3b4a24eec5ba8de3269054399a623f0050b5d0c10b5f5139b0786353504216850c85677bb596b2ac6a5fd4c224bf61ced0fb031411a887066d7a5455afeb8309058485386a023b6c58b5b967557a5b291698d488a131826b958df717caf472118d96a3b6882c1e95240909886895a0f5946aad1c690b7a904121688f5685ae775738307786c5a6915baee72b3d71103a96860afd696bc70b880c019e6dc77c38e33817db195ffc2f7cc37b4a6450a2e787d2e65c55748be376af57251974ccbd8b398858971eb5ac62f7156e9f2b43d6c54a51c40c55156971804e21869933771b3ef64d16e48ec5195018425d32b56dcce1844f33600bf366b9237f6ba451fef0816d17a00542433dd7312c474f2c1abe2e3a1a12b303f9d42891b12954473f6eb41ce2014bc083732e7a4a7808831ae478bf2865934437d4874b6e5132ee99c727798aac4b99c7494fb555a594d21bc99a014001b7d06612c2b3a8c7170e99e037a2d50f33e61156c519a1a15dc78a60afd1c2c159375ed570878c319db912c1745b90321ddaa48bfb80411197b2fa146315bcaeb292714ab7576d946b3927a280319395dcc4a0c431692c7848d10a36dbaf5d78af33f62c25e5c4fb009be83a5b93e054e587393c48ac1c65a524a0cb4e6637fdd90e43346fc9a45a720898d05b4d3743a0e2e40f4cc77237e8913ac0557db49eadd7cf00c3695379b06602c332f57da6409b3b888e7c06898fc4412444c677482003c73fdf07ba45ec968591c3445b14053a8077e664b9964956fba6faa50d680352a4c8378d208940722bda766910403970e3b50d863d28400512d7adfb372052f1cfd3b24ff4e46695533449dc232a14604a08b00da1ad81e31232412e72d180826b968513a2dcc724085a3ff0d5c3a7361f861a3e02b0308b897ed9d35b14a4159cf646336ab8c0e273a6915a14297abd937afeaa3f62005a001417d91699e4166740764cee25b91fc2c44753a3bcc2a8144174cea18546fc513028018aca8cff714d6eea7515db543a192d8695b1923642228394dfb428cf167201bcbd1e217ed1e2391c616db739b09c9a0996c5bab53bb5e1bb3aa547937dfc49223897034bcfedd55599e15641bbcd1b0072e11ca24ce7a828776fd0c94bce2738eaf13075aa7340d51b30fa0caf857f1c5b7808048917e7490ab0739147b7cf229953a633f080ac80c495f5b03355bcca47a94b60e95d72a29147f2b677c6a106f905f5349933b0b7600358fb009bace2c229246aaa51a95842cee212c11a205711125c4ea14d68a833c2892e8bd265bfab3e7b16cc2d34adeac46aa6e92598d45d972577fd76a9a7b954ad1bba6ed63132a375aa29b9eaa42366e2aa8da0374a19b16389a1b36c025168584a91a4328071de904ff9162a06a8bb9b9030f4571b1166133bd11f9fb9a2214c3f838a0a6106359e778fa7f504c6e719ed9c2ac66479eb1b662c8571d7e398f80941bf2ca0b8791bfb51693fa95894f25f2ba53882e450eaeb0b3ca706a936bf22f6056588144c1c3219f0eab96c000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 8106cd6746bff4925c2620882d571c50b36b066a5ea43fa6528351d97dda7dff1d9e9ee6ddc640ddb88851844c388727c918152c41c814be39f274183e116432a61f9a7c1885f07bf118e4ba631598fa9b1e01e72a68ec43dba62235587c9b9dd1c8e806174ad612a2ffd477e8d0edc2ebaf4036393283b55144b9c83cbb31d1674565abf29a56980dc4a3803a389a20dbf78c78a907a5d651649c27c9771ef436c189d1922564397f5b5594d7efa951ba7d05962df80c49c1f73029c3d7899852d8a1fe03d1245a228028cf713f4403abc64a9093d782cd1a6dfe12a79098e07f40904ad146dbbdfa919058149b051bea097a60aa0373cf9c0803e8da99c03a6b83813f99adea8c87e6da09013947cbbbde8edc3b7ca29f3180882cb11bec706f4048a20c5938560ea83380be5cd75f48d77bf3360fc131509317dd72b9340bab91fc6bf7ce099bfa58d6c5a413fd2801a15ce7ac6f6f2c0447cba39987a37695468cd0fdc982631d9b0354205194323e74d41c54e0a026c4e67467b5595aae7c8346d1bc5538ad0acdd56fcda32f95dd7830b65b2d98c05355a3ad9c84cb43c23ef9845250888ecb6f992da17f769a13bb7bfd621571f98b42a9aaf19d0626d7d59355d9730371b29a3868b97afd7013142866e0b2f1c54841de47c47775940c58475c96a4881bc69c6de346e05f55cab15d497392fbefd2309a834c733eb3ec8df4ae65ccaf690af492e39d0b5c91d09b39966b31b47ddf6751b481966f19758dbbc373debf284640015cb197e53120e0a36ab02203e0992f35b4c8347021f8c4663c996597a466b416cf271e04a20045639635b904b63250817c29451dd2ada5f3011500f705c2f0982d236ee1cd02944e35cfc6704f0e8fa30d8d2d595340b4245d3f3d5246d368062b53f06ad365dbf12c0fe7f492690fbf3389d234e76a618e63f785af41b2f4af70be0bf0a917df6a5f34683d931604c6df9288cb9e38b8d8396ab2e21a1c9a54f4dca2a4985c3c4aaf20af5e6fdd126860df422a894dff4a857f2a8aa54c4bebb70d44a4ad15d47497be7e0b7487003ecd6f92cec84bf4c459eb5f480dc20bb6db735cfaade1ce33782aaffa6a39e4f2ce9e7df44347b91d75bbe71b824d6302608dedab325d00163cb9e0a274ce49717bd6ddf4b9c02fb6986a8f765ed565f48c10dc90f39b93aba1a69a832e41f2b0dc2113fee500c99471ab67e3ab5a1cccc0f92273739eae4747de461ca3ce6161b558577b56af9e695a978970473dc671efcddda2bbd8d15fa6eb8ec0ec9f479bd9b8d3dd4865460846733856fd57664760bbd5ed354696ce6c8b44c6ebbcb07920cb6c3cf769c005503add472c7374b8875d714d25c74e2d4390ea455e00208763f56e475b630a30875bafc70f87f541bfd0a28839d441ce567db3be7a20e2773f08ae73f9686b95623fcfa7b1b3052d64448756f9a7481b1d9c6022898e79afd4c2290a9ed2e0658c6178826ce94e0ab460798a88cc54558c51239bbcc5347d59ac87fb6580f84aae6492e1ca700093438889fd50eb7028153e8b4675fd272667fa022b17029808b88df427ac048d8b410f60a56ac39220f8b509ca93c34c7dd62934f62a7e29aa3b0918299fd5c56b3c3158775a3b3d5c78aaf2f656257fdaaaa5b7daf83294b5fc48d08922ea6f5487d647c30b1c11a30d2b1690958fd90107a0d6cc689441a36d04039bea83c447e79b04bdbcbab04427949855aa1a32790075438ca6ae6f7897581b4489ea1dbc4c025fa1ebe698959a8145e8f11aa1cb6f742d1be789cba73fdea457eb0abf1e814c931922f451a7d59514c3e2526b1378be1ba8ce317ec3fe2e3d983edb346874f5251d197ea02c7b16fef2b7ba8cd3b0179b1f935d4aa4d463bda2d5dadd6ba96c0ad630f1eff86e34dee3f2eafb9cc5f5ed13dac2149a583e2af8db3a789c39f751e645acb58743646c6f65bb12564b8f26697e80b8d9636b0833d71433a0465dd501eb313158275608390568c7130ae5f998d3819ad7f3855d26ddc9f4ec07a36d191450dd6502a28665eaf8235a3f10b90aba654c70974038cdc9b3335d9b865da8a07be70d53f6a5edc7c4a5f4b5220c8e7fc01f5740360db072a4f8d7e80246dced5c75ad642ef1b41841f43e6e422f4f9131c1b3f505197f18571b057ed1cf2dab2f37dcb88082f8d8291d13eb7abdbb14
shared_secret: ab923efab9857dba5a68f9198c4318f54a42aec38d194133eb7f5dc172478e79
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 319c51bcb76124b92f39820a5653c0ecfba79ec91d632b0488f4020e5df4e37a
public_key = 61e61727c66c5cdab43ea53041e25b36b56a323a12f70c99eea25fb4d387c1aa2d871244021a45ab27a0709583e0c8652db31167da21ca46b84002ab009a8659656876a037e844b6c027545cc66d783713a79b1bb5021e7a2c5deaa900e595503cb1bfc394cf65707c78a97ee522be49c2c08de89336b4b50270ce189bc81fb6a464a853262791c748714aea70e79a6967e62566492157b4bff737804b014c69f41eedeb07e47cac957b4ca937cf4c907189606a9187c700a7b6756c5694b285ea6171625038f1c729a7897e5cf853aae66104fa1e6c66b86b643b1e37838f85bea35132a4176afefb2e6254433af76d5eb455b11a0624fcb63f7310b0c9b171d62134fcc361c2a58b12b2c53530fb658b83107e76006e43ca74d9093fe0ec4127f5866c306b791b5d033cc834652e6ba485efc76b5289304b3c774e88ce0173012e0203eda7a71eea170517114ef93f739501c6f9c9a4d56b77494f82c06753a996f33721a56a003167bc773c44d685a2aa45b61744058a1a097a14299d7a5257e27f8efa796776249878854f458d7e4b70db914e888567e5aa9cf238ac4187bd783570daa77c3a9854c11c80bee12374267da446cb1a3b5177c112a3945a92596093f77c3ea9bc2f95452b89879bb6c0028b653cb6c804d2680da39cb99233067c7b9124a27c4c6558a641718588709ac86d5c57ac7a1f1aac68c9c027cd2c0433a139f17b2972a5a81fc8763ad92391e818a8b77c43fa7e71930ab5934d58301c723825f9079ee9ebcc8096a1c4eaabfb5b73f070b43c3112af289c09d908fb8a2ab48786db29c2dfa82a16c6c8a8b34f83583a6fe3a630b639631742adc422a71798974727e2a80b139872df5420c60954a453633bb99dd40098be6952930cb35cda52a33c4728eb31fc7048ee5176ce947b194885395163af5aa5f2f53fe8c9246bf6143d199d2a797dd62b0fe67042fd455acebaaab2bb61ff778ffdac5edaf8778879c5517911a468a583286bb4d11a7f852ce921cec823647226c96110063d02a2708364e585c5ddb3914a27123a8c6ac89c6f98260009f172f644b10a27201a73812de28eb9f04cd0e4a19080001d082189b7b85c788e02324b2f4b07dcd4aa298b44b0f49efca0b9c0811b57729ec7ab7f0a6a7bd14c220394a2609832a26b3b8c29139af994a5c96bdcf13d8fe21c225b5e5f5aa2e0c7a21ec3a8017c885ab5a694aaad999c6ed14b77dba90fc666c0ef88336d79b3093719df8179e25bb59301a67548cf74122954e34fc5e94fc70b931a3669314605d609cf06f25f74f76fddc056cfa4654094b724636f49fbc3964a5ccd79580cc8a15eb07eb4061d528a32de192413d388b051660d43507c49720ec67ae41461b5ac87cbf91dcf42af4d38680f450acb9c6cec903807153b71613f02900117ccaa11e2cbd2885187a49089b63c3f1106fd5a3070a38b25c9757bb9b40c80c6fc4611334c4463e1aca784af6bc38584a72ca4db482361314fa1b18da660f440ab6c9167a4c18afe6395cbdc5320fca49aea990e12ad6863a0725863dc1009de81abf3d56ed4c70258096f6647cd3c5b1033512a742984af1a08617aa63e1b754ec93e77eb1f379532cebb7d4421a58bd133b9ec264ffb252bb8b546961e2f602aa45c5c20756f51c0ac29983ed95036758b05f6d90aaadc464e914004ea81eb74162d8a1e4bf986120c1e9d13cebc774677577f86c10addfba2b9486f9123458fb20e73c32c8a36a60f457074ba640309a7c9b744413a5622f43ef3785da0b77739e00f1268b50e04056b0c2071f8ab5451cc0d2861310806a4f180867310b03c0fd0d9781b3315c0da53d30b5a84f27962326084b4cf8e88a2087b420a9299c34a517c088e12ab2f54f35bc4542b85d455f6e9307c949cfd617dee8153a46c99fdaa1c00795296e9816e557369e34bb25b1555199dbe0a089cf83cfe019e5d013c6507294ce27e51ca5e805b894c13655ae6a0f9da6051706d46dacc69ec3898fc58ddd5c75e82345fd8137cb606a7707b4d3bb801f77b615527705399c8448f95d3c292662957e48bae0004acb52e55385f0cac2a9c76c471e2654968113c98be84c89e0a49040ef23751521558e677e32089a6969beb0897f74a52aefa2a087c454ef26efd08a555d6000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: c60d4aa71649960bedcfd1ba225807739b82f912425f50d32153167826926e51f8ed961b5439fcc7a3804d55ff46d5b873e13a0c8ee7606fbb21c5e121fb8e60377ec46ead034bea9c44a685e7a588875e5bc2dff98e5529cff460ef5fd1ede8d4cf2b02e9a537887028150d0d79ee6a0ef2f0d5507c42ad1d788a75899d0b7243f7179af88cd6b7fa41849f1f49f782eb0bb727a9b0fd51ebe3f05ae80fe7259aac42c8b0a70b7b74da297c03dc1f06c44edf72773958e5a0d38aa91c35e71b27155e875f3378ad6a2d064d6d7cd56689b1a42dc4a26ce2cfc8012e147940980403bb6bc164f3a0f9055867efd0bdd3ff4c36ad8165aaba00c8365d217d4bf208312f3ce9fbd7bde30d6e4d3f1a98b0a20f947d03b45f3a25ad481fd1dc271a0cafdcc04f02d314ce3da2e1aeb00c7d3a88ea3ea2783b75e16768f0aa122db015492b0ac9bab3d3f85fe6d8e32cfd66fab8e3138402f690bfd3a5fcf09ca27cfaffca96181b8a906a67d93303069ff91c2e3e6cb26c5608bb04e05ddeab18ad3ff916bded7e9e27c99492b7525f95e02833ae827c48b1f4ef06b77633a66ef85520768b64641c5b1b3bf319c390006a026b3a77331c530aa5a86d0e329d4c7bd729992e3c574876ad9a29d79b09018e850e2e63d51f75861af33e6acbdabb722d41312294a9b302aba8e3f04ab1f04688e373f86e3753d84070bda2feabf6b94617cccae0fd427f90f43d3b686fd772292fe1c93f355fffd2683eb8dbdf171b69bb6a5c929b7109744f542a21539e04151ac7e46f5d4b8b151981d4860a366d3500c3422a2bb5c24fced0221e1b84b9e5b587e9bcb87220dd92c127be67a396ac18cfd3470e715ebd320fa07097122f696ff81923e4c2d3c0310bb8b70690dabee4e17efe6d871b32eeaeebb448f7d65fd60e7a3f32cd07e61948be330179dfdab4d748d01694d64edabfa95647a21ceafd5261cca24a0548a135ca1f7c262952bee7a291857062d3546dea97cd745050121c82a73ec9c0095847e0563229ec36046ee1564ef3747b49812eb2bd015025f077b56d63500bfe523689a6be7b886fd8aebbff18cfb6e4ca18c2d0dcbdcff8fb7a9e852f81ffb39245abc6ebb9f58a28beb15942cfd5f797dc867f7a855a3e6ecbdd9a8123ecdc30c7240d44dffcbdca05bb17d524a791ea32d60c65dcb6ae3ae3b724ae7da36b88d3563a63f4c059fc83c97ad79602cd7701749f92c02bd65f505f407b64ab3f8417d3de5631804eeae565af62d7fbf95bfe25126aa2494368bab7afabc23825d6cb03151222bec05b09a3fabd5937b7a0ff17246564e163d049e0724456576f250045d13d99aa07a5f298cd76ac73f69c3547ec9a344998dea3448a96480ece462922f76f1fab68d030796bcf570298013001414ee238a8ac4d7047514ebd5c3e55e051846403acbd3d7a581c1d53084eef20edce56c2f50443440ad0fc77a955c1e5c4d610cb45f43435b1a66bcec638ce88126ad88bd1b0d10cc5aa23789d5c8f4d9c63cf796e1ee6f7fb309855f332a648c731775edbcb4968592f1f633a3fc74bc5fbfe9c0e74d8379fc56f869e63d8db3b9ffa92e9b470e668e10acc1c7606839f2ec0abd02629007e3b1300e558e5afd136f949eb1e6ae56b5a8c21d15ec4b62b22af89618501c1af9992a3f002242288fe01140e2476ff900afe32685afac7baee893bcfaa54c1bcae65b2c9db04b1e17dec3821145daa041150f3282a500ca46c535ee47ec02b1a1639713354bc4ff7217ec169a63bbf26a26b2c712b02c76b56a8ed0535e3ee1c3f118f2a68f9c699ed8702f3eb30328118922b15b8399a3fca410dae21e7d762e6e45c8de7ff023a75211e42d1acf1d8f506223cb281fb9615b2de1848ad674236e768a0f315041daab6f491195453081535f9235f6d215e5750226ae7eef4df26469cea1d0541e7932ad917fb360f4a9d5601126b1c76bdd1696e6d59749635b844c9d416a12d0eff4c4a9e7f40860b047ffad7bce7439ef0fef50cccbdcc848b02f66bf67f2d3cd795242896c5f2cff82864b1d1f00974c9142d0b0ef2a8d00289238e822d352a924c689ab15e6e5b201ee7ebca1253b9964a04efb4d7af21c6ecdc03365b4275d72502523d562209a316a88163ca33ea279702309f8c2373514d459a5298ce6999571072852d996fa8421fa594069645f034d3
shared_secret: a6ac9ae3077504c8a7b1e5558a0fb1e7d60cd2bc3e59d615e68d5165e4903d07
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 00ff48b3769ffaf4e91c1c9110eb8ce9e2cb99f060b486b37035407d2f4ca517
public_key = 6328240b1a7286c71c5cc17284fb5058410381c74456c1ae3ad93735b6c7d0e13621c924a67a44937039df4b4da608ab49978109f077c961c2e6d02cb0f429fb04bf7b32afd9e0748a50162bf49ab17602717b25800ca3c762145636adeeec6543c43dd20a2a194211030971f16139ab86a22fe07664b425e47240ee1101cd171bd681a681804d38bc4cd562b7675a1a4fb113ab476fb7e67009c8ad5edcb053e77e99d10a348851f266919d29204f5bbe27e8672ed92e7777aae4141a8e81a39cd83a30005127289092929a41b42db3ea2c3b9b4e14a02a45906e871b5ed4c5067180aa97a6967642a5ea52639f27665a78aa24511ec6bb8ec7c3ca2fd34fafd5b5397c75c8144894b56d61e57ef77725ed8909afc703c6cb858fa1c600556babf3cf4fbc089595606f450753c727b42c7e8a8c470ae99e40e518d73684f2810e1ccb187441873fe14cce8628efb360083029fad17c1a9809daa08df859a0626365e0f1ba97ab9bb0d09e3b2632812152ec6361cdc65307f916b1782eee7873c2313089f3bd0c5ba938b80f1b43c7fc6c3f801444a34ab9c167629076442b1cb34c9b02941368c6377098a7618ae352d7cb1ed9419d56158f9222c644f58c3efa5209317a165434b86350c1a94d21fbb065854534120e665bb73266b6a392a60fda82b096701cb100aff65b44a40a4d8c83f8c63621f44a6de22f9b4817a2772085a95597c309b6423b9710cf72720598064717b52a336a0d3d9b6092e9a445a3c507e37ea9ca126b1b8f4f702d55959faa7b80322045508b2025ba64575049738699e2e1a42630c80615724dca7e98acb40f6415f6907e3649962c451f31164e88601cc2c37a65c636b6c146cdc24e5ce6976bc3457277a588118712cbabd8dc273fd0c8c3835fdeb500fe035116f6beaf437354c39e9152c3c9999f5f98281096a0f1cbafbef24e87bbce8f88377a0a3541eb128e31a0d77c247dd32180b97bf6f8bb2f611e7a7927f7ca25706cbc7b52598b4865ed8b520aa53e6199a96a0bc79a09002e07bcdf78473b273028b34e7a7c9f71ac38bd6327ea4c9acba59a07b59433908a3b8a4cc5a01d704773621b4c750389e8557498747ebb3b8b41b99105756205b2b578f668de8c293ef989a934cd1c80b18d700f7666986fc445854c9a6bbb8c9ae050c6316bafda5e98aba4ca0b92e3c3a43c504e214193b43c9c9ccacdf4ba85a57c6da6d1a8b310c4f0b7390c7001e8004beb92bf55cc8eaf37ae07738a090018e843288a965d4e8bbbf9a18730106c52758367361f558272f3887762ea91c35a23a708394b8a3b505098f7ab8ba505bbd1763a0339084f3ccdb2e68ce8b032bc217d51110c6cca10f277142a844ce5e7c8800b5bc857613deb0e5e59b4acc72f0fa1bdb0f016ace9b02a43a49e83c207e8ab82e98fa1144a47809a5dbc5be622b1bb364e8000cfa2c203f247706b3b3dc520bb308a62bd893c3bd890102bcdfa1b6ea91cb5f86758d5339396184b2ad4b36d6c875675261658615e55c85839cb10ac8c789959cc675a976c4b88146179d38820344f319b1621248577294d4550a33e723d65f11f3f654f11f206a7b4c4b909a4b1490f41d68752aa4af2723ba9c092d371c0e2459c9361230cea1772ac0990b6626a9914b20769c51b2df3996639fab765164a7b61280049ba14d55a98537e85ca0d8259b14ea4151c787d49c9b2d291c9e2b005c13a3d93a88840f9a19d30c346b14b413c150818850bb8585ef0263b515a74e79032b3c561ea543d652076a38fb4f769318378510a8e277334c148bbf38868d74ab56adb16f75a6c4ecbca6e1ba200874567fa5d1bb42527f123faa69bf2c45e4e79022799a717c21260e3585d6a86b7582a1f166dee7015abe11b42a961d60750e2e40ffc82588448b515bb4afe246c875297ef87740a775fcbe0bd902c67b9830c6d318523e422b0060bcc5a5a5f7b267f5b53e111c7121b86a6025a0fc2716fc11025c857ae1926fa7066ab527045d8244c75bf13a1a3c6688811d35ad23c1435b4cd536c6f14f78bb5d34b4bb34548a375b93234c63645d7ab59580567f9517604837fa6f98b2b4911d9946a54d0ad2cf0747b4081b904a2d6f953c70065b0c4b698e556daa27cee3b40070326f43c3d93a7cfc649000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: b0ea35919c0560ba7caf9fb6352b36bba962cd45d3d2b7f6bd97ebb2a3ba6df22e018390330f75cb4eaef8c9ee9bde4a1f25110dadf363df31f3f8702a3c14d5d2da303bbaf0fb199384a2702f7089fcc63acfb29d5e53571102566866898055258241e5ec4f1a325175cf3a64a84ec50b4e8e511ec24dfdaf0ca79911b1d84b5a0872fb1618edf364ea06d7287c6ac39e842c56d6630ef38f4c812a8d1fcad73f2d4ecf8f7033c1f5ab982c5b6b8c5545237c4a3ba8d5ece30dc93d1d4f4e89d3bba0b8149ee5c2df793c8779d45de92630b292714582387e60769209ea7d00e2f1173f8817567f52fe53d908d11e8e77375e7d2f73f44a01ee3c87c8f4163c579c40ce70dbc006ad2426667650c35d80ced3df0f3f626fb52f57d874625d414aeaa658a220a4ee6350900dd7b1b9e165661b41cd0c96c3b665d789a297f6b7b4f261e6dda3f6b027ed8a308f1168627f71656bb0ad456ed2b197c672d88ea6bd61fde6dc3df7e4d8b505afcaa35fc1d9b5df57b69679811ab5b738d62a5800555fe282dd4d06d5ab25a3847b4f22725a2360d8b47c69458b55f485a1ee75918cefbac2b4945c20a7356d1b7c69f1c047ba355496e21eaa2123b5b545e86c23d4cf27011e68611290161366d6c12b340292113d3973efb312b1474807f8cf735b76bb3a722aeaca7b865530fba177f9016d1ad1a7bd86da6f657c32d6662e57cc691f5acad0faf4f21027fd761ae23456b599333c9af918166927c6253dabe508c7d931d50cc824c589881b39087e02b52276b9d4252c08199dd4943d72b4fc14e603c9e901d0038da715973b0d168b13edc26b20e2649f37d27c9cacc7a8508ab340a1c3ed8d26099171bfaebd39b0b9fedb3c195a381b55c13365139063e5525400127cc963d9659c964ef3415b31c3a2a923ed3b96ffd327d6eb4929ce1d0d26232b46da119e5e38e71a2dc97bb953567bb5dde9c2d19bbd208c85b135bdc885121b5f7195904d2a9141bf5222e98f95ead571db8fe2df9a93501b8fb9a06a3ce0338a37920fc4268e26e71f94cc218d6fad6c2cfdbf0a5855b186ccdf10f66f01f884f22503c530b3c5ecd96d9b55651b1eeb3af62cb7a4cf4cd185d98afd1b942e8f7eff849ce843e113e82c3a875fb996161e0d0185aa99e21e7c99c9636cedf0dc9aeb55a37eb1f744841f5d8fb3eeb5eef76039a40a5c643957cc81dba3fe556234acc512efa07f3a140ef28a93ed9cdd2088456e3bfad0e8377e69fbb3dc67f3864ab36f8f8422837e067c20787b80d77a30995e5d78f84804cd7c897d0ffa5fe1e7b92f17575d94512b6a4b5888a3cfa6e03be3a50b8797f43a87477982fb241f24af59f13acf60ecc4c11e558b1a4feb81f69acd5a67f56bd698888c9f00430dd8f8309629f7c29e96d2951fcd8b521265c368e13e22fefa30bdecd51407387c77259e64a62e5d705d3d46be5b6f710ad86e844e509a3c5c1dce0efe4b1427bcbe56758432301a14d8b882a70cb5c587e1636ecf96c61998bec7a9b6b98eab92be2e30b30174c87bb8bd66d13282dc4d1b67757435807a90a0b268a9f760054c219bef6c8811476a56a14994c760e21a1b786efda3fcda5acd859967b9874eb049a9690b0acd97c907c1ec6b1bc9790b1fa6c8f15518b9c18b3f0cf672d26496be193602d909efc2562bf72e83a3d8244eea1942c6b6708f006963ed1005615abfdb57cff11b985134ef3ca90116a7ae35299d1627fc05cd40cb32a83c9f9e19570ab0b4e079ae34402641e47e1f0bb20b63e551dc7c090421bb1916e970b33a6cee4be985f28ea66cbcbaa21279b45a4d3927eff26dd1d171f18ba8c5e78644d6027e7ace96ab62bc862d8cd69bdc9c07a4d8d66ce2a08601783e6d40665fdc637aa813a447361ccd9d843bfa05f5e88f1f74a4d6fd1bdeddb1c50523d731cf6cb4686018e8518525a83c2aab2fc5ff97ea1562c7cc7347482c96675b0b249f99428d68f180d6590c67025e41c80468a3edcf147368f3612456e9d73bc4d6e0a70364036f75cb6657ea99c8fa365c165d7fc912bc583f0f4e57ba0f531544282e21dc42e00f00fc59273d272a711748bf62760377e5c30c1776542936a10fdfa8acca0b4b5e5c9cabf461ed5caa9124c59a4e867859401c158080970ada9cf76ab49e250411a61ec5e83c781c269b75ed1c193bf8134d7b0dea
shared_secret: be6aaee5bf0744e7ca1ca0e545171f3075aba9b4d10a71ae00848c8398e3c52c
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 4960ccb1276f96d7aa55885b6ae6f90343d42e1391e8241b5952931a979837e1
public_key = 2b1a5060745e8525bc617900d53b414dc995772543cc58a6bb7c4868f8999509428a3244db4081ac6b3f3c685865814c318032a678ce19866754c0774b31cc47a6a8e3cc90d6a15e54c7370c0360c38409b126c06d4b06b7d652318cc810c774f0e66e7e547305d03109030fded56940d472ee123438551d6885922ee91889f97ae31954703952f4a3951e8003ca2836fce071e382373c36a27b947ec8766bcafb1a3105aa2b082802b9bca0e4c50b80cf9a4033b44ba4b8a2cd6d480a315b08e7774d68f8ca8778894bebc2ab431d63c931e61c5366699b65ea448c127b82ea493034616fc1b6be01243bc84dc92bcb50aa4c7a417f1b5268e93b35ced9cd6263227c849dc8b107b10120f9f690706cb0ddec8fe2b20a26da422604c9135c58f0b06aa5180ccb55adcce07e51f885998398c4f16162c33b89bb37a09b84dd0a9d0e8c90a71c2851e33b3e9cc5531a76f81992344161a837608872355d57111df72412e58c5ff85b97ab2016b41487f56a9fbb48d2e498c2e12d3972c677caae5e439c598b67520a7ff6ac9c2424482988153b145d6b40973a1582b90a5bb76716c9878dee223046f746f08323ac3a5390a6148d767c3054524b7247c26c9339c0642632710b8a4fe0502dcbc32c35ec2e1e22510ea4abc7c74980ab25f9fa58caf4a70eec2d22c1957f162f5f1c5e5ad0a0fda4c342885081d3070d773cc972928eaab2ed604503257bfe448ef2a9c9c933055e633a339792d24a44769b95123c1f9588c8759a469c049a75bcad2e6087559c8afa5b6415a8825567aa44f63ce5b49ba4fabaea311918b804c7fa2d1742945f39bc9e8256b537128a9735a0939a1150c10418551723154cf4c027a5355e1751a9866bf558672fc68324438f12d83551ea49b358cf873772ae7853b53c9627ec75479c746a116c5e66b20ce0478c490946a0af4a3a3138534c2c94a44bca955e84513f548840b929f4b4ae51d53d52225a21b320d0d8b075358b019720c325814303170b627fd6856a149214eb192659d21001d5ba6953288e5a62d141ad5ff31c413418f332947f1441b8663f95b1a8ea35576e725a83177126719889651e8f20a8fc2392cdf55976651f1c177c5d8bb035993b0f2ca020a8b22b27080c4161cb86abda574deb0c858d14ab4261b1b8718ac12c56db9071a5acb00c4b1fcc9b9880917f53cc12bdfc77103a45ce8a2f4875c7e3711b659b967c5c26497c6e2903198f36b01c56ac5d054672d6914498643ae6b5bdc2447300737883306e4250ec445b543bb06b6113db5369da2b02dde3a11b2c080732979676040ddb2941956068557e65e0c4ae9c2834671f9ff65c246b31dbfb82720c8f014aa35d343b8eb762219b0eb802637574724595ac1c92b85e9a416089a2366ac9002d01af606ee9b21868e72ba96c6d5adb51f97c778cb8653e30a253b333ae5bb600a2b064cc387b38bbc0379c77dc45f7fc45fd060c60bcac60bbc794d18a5a8ab680a0ae202c97c3f153d07058017bc0b74458959c2a358b6c3733c60374a2ad540c75785ec95cb0bc125df1e8359af2bff55026d18348d0eca6672a87671925a8568060c09913993fc6f89e2523023544938a573ad208761e3ba85354cec6d999ee1c5f909bb973e0780c84101cd3cb42319b0d5614b9d103be8477ee9713cf943e038a04259c0958376c1013445731b0a5224402845499f30449f0800de86b614718bbe333b4b8245fc1a8e0c43eadd61f11f532ddb7551686cb8b054b2e90a19c889ccf68394cd501fb92a7211b9b599b2a2b637dd4246a7b8a5f713acfdeba03fb513f998177dd8cb216aa12c27ac3a5b84491738e5a745cbe7a3b5006bae6a08b0cd79a2b27af3da8ab021893e7727192e28787a052df8b434abb0f3a5866368991aba8ae3c891a0870327c3967eac16e8bd725bde990ef882bd6e5663d50b7adf75048d3202b39b44606ba1ac33fbb7a866a59a8c70988705974ec413abf660d5e98b6d9c60454a8825874953d778ac527578769aede871242b04561ea2d6e5c8aa04ba44228125bdb4beb90ca152705716cadd283ca2fd83ed9087ac5b2c7cba9334fe936c69586e3399fa46a174170aa8db62bd7095736012b49111e73bbcbbc89391bf70af7bc3581777c54d74ac2fd37b453000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 1feb4f1d63f08052045012a21c33c2951b16c4b5ec02c00093d54ded6f94309e44d558787273bf593ac4bd77a56fe4dc30a54eb68a2f473c31c239ba18c9ca489cd50611fcd3be42f6f5069facdbcb7166a64ba7c06ba953142e5914ce20ec69038895c9860e69ce6cc3dac6c1b28d30fe83487d40591995f091d4ea116ad2675e32bb83325b7f379449dcded935027120d01ee43b2208deba910ca7ee635c5b928e5f6167307c813c8e7034096878a2915ed2d20898d8412ae61a72378a4eaee2f227ad5467d04ab884340cbfde2400cbdbca7e07a2f14016fa9e403a2b0ed27ad1dbb3cc492f584a6b5a7525baa628303039f69cf1c1e4db920ef7882de21eda5d2bad76231c88a061fbb2829fe93149c69204e2e783009beb4188fb876a6f869eb11b1c32c2ef15f9aef62f699f9692a502a4d87e5a497097ca73f8fddacbc03dd40a53abf267f749f9ac0f7b4ce9417a0f5eafa91fef75441ff7c887dc2eab2336fd257d4cda373121af864d4707fd20965e063fae456f0bef8f587bb385f8e5c96592c9b7d6c284197ca1706e1961dadf16a2264f74be425ce117a95dc9466474c856adb20931cc920177dc3f8c93d2bb3ad5f7c5517f0b7d141b87a8c287207e64158934766c8845ff0a480da124716b11d0e257206f68f2d4334e8e260895ab83e218e032a35f8d792be7b413b2679f8044e1c0ff67c474ef4c9b7e0dfd3d9bc4252fa81922cb146417dcadae7d7a7ee96e13bd480c96a4314f31fea83eef588bbf1435528c51eaf05cee2f193c3fc234d695ba32546ec77a16b1ea8047498125f2bf78dc9510812be57fe0ec77bfb3e28f42a4d15c2a2f0b54aae023ada92395cf384a1524a24e36ee2e69128fd2ab78b5af77d28c2e9ccd6c706315d46887db0c0c4f28666da7437489e3b245a19fcee97f187327a5806d35889e63940b19249d627165727f66f50aee62dd9496d6493c1f01ed0091e985048c2aa85a3b25a4f90f6e9f9cf67d6961ca246d763d3437ad64e7bc5c58b10117a66c40be088c58a27be4bc1360d114e61d002e271c4806b872f5ef7127217d5af6092e4aedf8b5c40198f266f9e10c560d4873668d58c912ec7ec18d27249f5be604a82d50421d436a3230780419bdefd10f049f404184b3530361c5c0644c3205c32fd451f6c6919487aefb12a75c821cfddeaa14c2abe20db3ac57ae0ee8ac4567db2d1e2d0920fa036351e8bcadbc14ab73d0868df6ab06e675ee193722f93f64a5344bd70593c23647152a81acb4d1a08b62b5f0b2669210d5d7845248d95fe9ccd796d73e34af955d1c94edcd2bba91be211cacb0884a90eab8a0125130ae65318f5419810f4df129c8504def662df4879e2a8df02d881e9990148065942c0d52865425f3239c4a4af51eeb85e1baeaf647e794b9fc04ea16eb328b8b1d0550e5dad8bf6248782b530735f8f5da40cf21241a2d62951cc9e894a339491f64b78d436c635eccb855d3a1f7d64f63f23023620408df6b3d190e7965d219a0cabc0933f7d50d9854e4d4aa7a5cf67b37e0475241a5af8e5000d117ebcea40b526c5a669dea1760d7fc30519148649fb00ca434f2cd84862a2755a99531854cdc847b7d5af3ede653ad6959f49c921d4a8675f7f3f51416c39e026488c297d844a8429caab43671093cc3ebf8730a18bae06f10ff8047cafb8d80edd7630c95d008cefca78f2b08ccb330d36eb33b18cf47bfbbcd0e2f81daa87160f421603d10409b8eab53f1561623f5167dafccda4f9a4e6504a0b5e67ab5dcfae98672f4cf62e4f152d09f2c64dd81e3476839aef8538a86f3b616ce55adf1dfe9451ca48acbe210c32ea1cc574730b37d4747b580c66820caf475858b4b6ad0eb7c06ed56b8f16f83595ee3466bdb8aaba3bbf35a177fd6645610b9dc238571e81b27b94757c9004a4c512cbad25730bc6f85255ffdcd052447766219e667095d4058e5f0045e16c0fcae1aed8dcb7c25fbcaf29a71a8abf72c398a61b1a57bec4b11a8c746bcce3ef0f82b9b2bd702d92a7fabc1efe0065e662270e1ab664cb1197f00983f1d265ff738f63b93d5d95aa4ddef2ea3f473440ce7ca1558b28fd68ee09c7b97e9d4c2052fb1dd657ecf09a2f664de0902f23bacab5d64bd449a0ddab34d4c0695c67ff5f6e11044a0db15d2d19a9ce2aeb818f0ecaf8c1522276521b0193f76e2
shared_secret: ff81d45deb69b6890f147710945d1b750cf17e876cd4e694158efcaf4fa2cb15
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 456be124e7f43803de5f734ea016455d68164a7f054c003f4ef49e46f42dd8d0
public_key = 101738f8f11e10897f9b1b16cc7c57ddfb3e4f6b01ad6239982baa07c56c05827e838c1b4bc99f9cc40608e74ed2d123757aca9d8030a0857ee2676db47bbcb1e10badb32508b87aac4c066fc747ad09a52177b378fc1446ea5aefcc30b0d744d2240e5e94c6f12254945223aa93abd8e71fe926a4fafa2a49273d618a0a5921cbde9c6f9648c6c12bad96d080e39ba128464d8f496b7cb020ebb03fbb2850a7118a7edb1bdc438565ca33850c1b1bfa6be29b88bcbcbb3e6675924550a7427035f60000841603c2b4c9f22040f9205c9386cd1b457046b4fb1521e4fcc47c1a0e7fe072bda26946762167d8bddba8c6d04470a2705fc05a6b00c4cc54409499a4859c4148b2a7596c8c7b2e597f0912742794495491117fec96486035f270363fb88511f756238ac9faf98251ecc06e1495337529b209031c0008e4250f550c3d476352ab82c8ef41c4b8203caab3b81335613016cb71b6a1f2c9b71158526cda75d9057c7597099789782b05164d338593b0a9b5ec85e0e6263c6a54d5a06ab4caa6c8db5b40e099f0ec7c00628373c3189e6c129b76827d160783f183ee14151b3b92e72bc4c65a06296a88b9f75948a18d50f53381f59360a19daba36939c3af104362d725c62f51b72ba1c8526c0be6a36930e19de18c2b1e470136cb7f92d246dc45992879b3762c92da6b97c10a552ff7a8b56788985814d2f9c5cd316dde3b2c7329b42f7492917c9174552219719575196844144a04a0b6718158cefc7833a421016b5193a5b965eb7b689698d14a41c03a408f8713aa46a077eac06a6106796c64b67117acd1bc0220125f4408222159503864eaa8824626c5651959d0f4c250c0002ec513c0817a47927ed99467c1eb6091f91773495d70084a7c344f41e0967925734ad846d360bc2a73c96f754b065112f1f472fcfb331eb8a286bc69cc1486d58b2d4932086f40c90ec601035c3016985962da0ca3571f5f36791a466861527a1ea52dc5a6254303971ce841d165985e2c02ec5b6a92278106117fcb377ad2c6c48bb24899a519626c74da9a3b026623417156aeebadabd418a0a8bc0bec5b43316ba7d7c4145016ca515ae19932a50819ce609b9ee9997c29a9af03a05ae9aaa89aa03b4ac5ca887b7b05a14d283a42da27ed7187369b0108165ef403550c99cad5c3cf7e28bef8a83ac8867341b331c9c02176520e0555af9b8047b3753e1928c849a13900545ba7a5c16bb9b6c689102aeb73eac0c5aa093a1f92810472c29642cd2a549a32bb9029961f6c4a20876ba8f4ab5212539f543c9d247355a300467b5a0a9d130613549d17a185fd045495f06820684c86aaa18a89317ea34eb0923d5600146497729fca9a66e9a544a55c1aa6841c556cdfe7ac0959635281c54e044c025c5b466442f15655474928c617a646c7178bf5b679062ceada6c6d702c22d339e0d3a9563a252e36287fc7975725bbc1a68122f4579a34c9c84318b13a76254c6be35a1ac3b26a8c2b373c6378cc20a7de414924a38ae7e8423fa1a66367a14b198f9980aeef068f346b208aecb13d827b3b5ac088878548171451109ce1535eb0a18ed1c1c677f9ca7f60501e1986ac19764849633c408d476540d6290738633a2e711eddc883ecb5111ce01bdbaa3df0f381facb31389249e261786f79aab0a80992b9a74002c9a7432fe88243f4276599389ce8119b846a75dcaa8eb300a7cfe266bbcb3742bc1e4dca77b986be341a03a75644dda25805bc50818a05a8495fb351c0709a5c37a07759dc0c3a253a3c56740aa8095d402bc65554880c2919dc6375451be6186d18da30c2f35ee4f1abfdbc594ea6ac5799c1d9912fb173044ad995d675751294489be7674d84181f4aaeacd9951dd0be79b919e585560d0b090b750f2f667e2ea21e283577e3aa4f6b11ad2560212f8309fad233ef87c6fa37480217a7b3933147daa29d2642cd582a3ac96ce5026135d5376a586f4604a8d511bcf5d09dd3e895fc3cb7d90a2535a1c31da1b1df5562e1b2a86a116212ab10a6328d2b80921c3c04ca9a4a9424bcc3a75e649ab34481561eb0a0920b71c245c1789770df5a7fc9136d4b573b227614dee4b23276af4b6c3537bcca67b59afa0119e668c910060e04e7c94a1a7fe0e191fe22cc727d12dc6d000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: d4952da07911c8ceb643e6b3254f7fcc22242a88df735c9aa9a91fc692f32544b7f30fefed3311dc8a927930c50b17577573f858b778294929b123b180498c22c1ddc92a11cda9c0da3cf300664feda28bff6f1873a682451d24e2c2a5991fa8aa29718a43c2b379ebc7387fad5dc9e3681d233641d1b805b167ae52631b3b6ebb0aaaa6507d4a87a808a1c3b62c97da49c02dfa2c729693de194a1bb1643fff14e0fd8d3749ad33936e8b4f8f6f3106c08a8098c6b903d1cb70c2636571253564fb7dbe54b96b1f999749d0c81c698934756b455bc6ec918ec267b5e54a0a812c62de971d8ccd93e4c1d6752afe3d5308c5257abed2b1c01d0489bc1d5fb5b2f4b199cfec784b2bf92dc85904cf78a9a6c0fc3a9c5c1640f905fb8fee2e08b3c0d5fa029062a5d41c82c512ab0645e7a1d728e7fdbcd95ec59d121fe876b1e6d624dba73cf68f35b23bfff7a435a5afc81947587b60d588c54ba0c999242830e568c3269bc96e001a99edb6ccef086abec634d0febbbaf72d872eae8c5606e86d9bbe279395c5370647f245351ae41358cc26f5447c37f959396dbb03e484c80dfcfdf93701e849e081232e85eb15e034b5421dc63c62190ea54a83ae06c89f395f7cef8eaa41517345a3a0aae4705529d3c2c13f71418817287c860f062c6d0c5ee918c50e613164dfd241533dd08928fc695f3b3c45cd75c740f76f6a896cceaafc9afd64deb69db89cdbd589fd6987b1f5da8b5b9115d675d3ab6cabcd0f793f00418c97b673fa31b851c1209140f76492359f3580c0e4de09d2a3efb2b3dd4afd4abde0e97180b7b24a45063f07f82771991fd2da92e12de7a868e6e84dca6a318dd8ef3a1ae6420d63051306d0582b058b7a96f25766aa0d863059483e9c7a17748a268e896f0d02173606e4381b639b480fbf0b3541a7c1790e66810e064cdc9d4e176cadf3d64ac27648467cd0b8643ad1255347cb6b086788f6c4dcfb3363cfef54c3ba5c13562ce884b53b09e6f149a60e1fbb35b65261406ec04f4146b2de7c61c2fdcf0f714981308774af933b710d1d4f315feefa97a581a98dd083a4d31749e5d0af2ccc2109cb739f8bfe85e4e7844dc3907959ff3c04ab9edebf3317f354c5e0aabe4de2e0711ee771b8dd70a3008eb9936f8b6924ec0dc9897a801e00f6738ec7f31cef0db9608d2c3d3683e97befb02f0ecff93068a46e57c97201608756dc45ca8bad93e0f562f5d74790c87d4ffaa67613b89c22339115d7499a2fd038bc4533e46bfb5eef28b06b8fe9a3182c6a8b18286edd1b57adeb55bacebf7c842d527ff5024c0ffabbf78eeb956a5127555894ca8459d99df31fc0fd1e1c5f7050d2cfb427dbb2f67530e049e23f8310b88c39d25dacbd6c7dccb9e382b0b471980d54974adcdb082825a9d6325cbaf90030a58193d5ef0a4e1e8fc885f04329253408b4de1d25acd097ff10e0afb4ff344063edde277e49b18996cfa57a7617b395a54731052a95a3cced450d38a31f19811ba278c60097aa1e3c91e87c57486b23ccb07d687c48fbaef4e814f9500b1e6f679a749614c86197239936be1f7ad2290b9a421c4f2fdbd4178a75cbb9cb1f7eddaad9d369f79c0e383fc9ccbbfd5e4cb93b211c477cac2786395e92385a4c0815d0ff6849e961395eba07c86e698d5f62466492efdbc326ff7c955840ed2877919d1cf95cdf5f557ad069363caa905c97471c85c5d0e65cea1ca90df82a0f8ef5660f68191c1aa19a180d18ef4a7b0dde8250ff3ff0a97dd4d65c3faf1e3a426f6c4b64f1f2d65ce9c5e5921ac20197a00f2331e810acf4f6b71878f1b785a28970d844ab4b6d1a604824db09f15e96bb711389114a4680b1c8b19be73aa5b039116c7a7cb7d2c2b026f5847afd6d2ac804f4ca24554f5ab27db900a159579efd23d78cf5542a038744cd6bdd64a3b59d233b878b383bc0ef38a0a2a8ab60869b64634df1cfdf3b53a367d3bfbbfb741badc819cb01823a8e8e16f6b4a35c380f99cd45af0edabf9de4fe2e5b0e6c34f7dce2c8d9a4be2b2b8951c27080aa965ae3afc422ddbefe0da8f766c8c63823050d1ba055e42352d305385ab932f99c0309dfa8d6362ec1c07e33909ac63200787f5963653db6ba2994cf308c9763a153b6ba824fb8ee94bd6a38f2a12047f7e0b01d090aaa41b4acce8396c18aece73cce364a7e6d9d
shared_secret: bd452a700448a4542a31dcddcd0bf285610aca6570d8bc85e20e163a13db5663
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: e8ac9e76377d67d84f85a142383e777157805be0d0f679ba89cefdfa61583780
public_key = f6036a8efa3d74327dac2417e6fb05e2f1c178023b70214296c3ce65151248533f43a4b50826b181bcb51fbc54279397a6e50113635faca0cf7439be90867a4c548a9af0704da13d12c7549ebcbe5b279afc266fd83b9c4222b717b86fd4724cd0a35238abc2c3390695ab975bd38e0681b67bf86f36cc91af700277998ad3d700e6419105dbc952144561137711a0acaad546e76c66ab5722bae1cc110abdff7044b662beb6acac276317a7799f7ec6bc1282c87cb284006b3e74c361e5c6c8b899ad122880a1219102404fad458170f8aa3576750a9682c830c7c8796daef63042f3607c5c059ff98b7a093ebda2947b861f497202510a6a2cdbad3d7ba3b8da61f02671be3410549aaa9c3140635334f6b4385cf4105ce791db08b73f3ccebac9ad93f1c7abf6289721568d601c2cf5ae2e4690ae0c77b66134f3e1c33bf82771491da4d228ebbb7077312babb47e1262009457a3caf60f0e47145e29a3ec3b37a67b9b418625142937278c50344c05a0a606fe43c229749415064556a55dac28321be77a256637fe2b8dedbcbb02a29ae505c641b004f970b051e028d047cd152477db673875148b71434a80221166698c3cc589374634c06110320b0f249a3ec4856ffeb478979533be7a333eb144550939b00164b6b1b545905612dc24775ac2e4bbb531c6763f934121a8a8d804951b05c8f9c9237046245b422272288e333970f7469a78d543132055c8781ee308382398a7bff70f62b7357bb8093624a3ebe3169e957f3a33019fb0296ea1cebbb484e87b04eec76a3e29cb38b451816a8feba195dfe79e820591d7e73c50139e2beb847ef43e42ecad64b533ee3857dcb35413066c7eb19e8c1bcc42c9959c13ccc4bab6ac81b44346261ebc74af482e34f855e08916e0c1bf33861fb6d706c3a5c03bc62c6d97cba4174b2441a32ce47db7b8703452bc4693be69a4c539c6a6b744211598cb644209e84a711a05b9116574c7a222bf459305f10a68d4c48eb72ea16526ff7619e8391032685e244693ec24b30a257511e00ada5a69b6cb75c2983d53157fbd708fa1e54057757bfe6067d242cee6492a51098913a6b2bf888ccb280dd3cc48c6a95ceaa5a844338cf4985978929e9ed153819b97dbb944e18c0d7530a09cd420aa7ac5f5910325d02368c602d531289db188d30c6fba407f32c41e80133cea869b52e8091f701c3d7a7d4b317e9b0291f05a652165695130c6cb783b18ab1ffeba0f72d2c21cd9844f8ac2826267081a4315927d9ab6123fdb0193f723a3cc3738794f735b1a145b83189b71c597bd8248ba511b9463b9262c80790a09167720473fb77b1da2af8632ad793c10d1916868b99d2d23a06875769d7151c9a524aad51eb4f20bc58b4c572cab2642769fe444362533a04c7350b3c5eb418785e13e05b5459ca2c856b1b4e1b266e9677a27d29f6dca61a2776c92dc9290c04d77d7bc7cfaa8a31a581a623cd1c046a488080ffa8c13f66f4d262aba53cfcad64313c5c2fd838f88e903fd3c7da0942fbb3c84f4581457252e8248a75e185d4b5b64e0634b2ec5c5a088a6251c9c8c76837c95c066a565f9fcaf0cc76a79e1a20fb05a5bc1bcdef32deae76105c581319bad317b7991d062ba1761cf1accc2b969ece35274d7b6a3c8c79142c43b14772ad96fe2f296eca5c9aa4b68cf14c584792b1e4ba1132aab4de7788dd642e307a6b2476caaca69a1f7a3946404a440764e4446c20c216da5965c88bb9e09c165b93845c68a5674105884c46c601d35737649815de052cabbb31b39f95531286e08e64772213280ba64b6467d03ec43c5911854498656a831a366cbc256813d451153a3610e6979671ba7bb7ba41dc832a81885589974f8ebc2e57a1709eab2ae9931a09bc97d486839d6a16b29b7de642aaf1861c31b6ebe82891896b4e75b2360a776678aab892b81c5e2175eb588885b980ca02e9ae7bde1dc6346a13a5964c4391b4a3cc776d9311f0a9706c2c04584d05b58624906417eabc95738407ba197b2a14c6e4655396575b585f7c2a8b262cfc7c7d6f3a1fcbbb4356195b502ca7b278133614379176f3f4aaa49a040c7672cfada79ed5a2400dab4d050560d8a30c3e57ec6411988e941622c64b934833f9225daf42885a5b1f7909d65b5000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 021a27d9ee3c76b205152ced9c68003eedb09245954d50316a14a3e1d877bd9d6480d479265cf7a693e77b8761f11a09c1c30d2fa5f50497ae6a4d2afa3e61b0b7fb4b3504024763ac6c10fc2e6bc77dda7fd837ce115b84b1d0c749e8e4a961d3e7de1bf6b36741be282f9df710b46410df07191c3207dd9e74e8c4d43e3c75607966a1894e86caa95cba51a9c3289b00ad0fe59c034099b822654caec138a1b06635d1de59fd469ca3e928deb7873cc3dc2fe03aa4b5729f91b940f01ce83ae5aedac13d0a961cd9420584346346955780974ef21ccbe3208cb019f050fac0b80076b48ac6c0f3c2aa2dc3a13b914ce5343c7a140186728bb335a47515d361466c2d78f3fc6250f13a4d4fe6c8a587512700fd5272c9de73eb698045708e18b86d6b6692e3afa1b73e5ed55614dce4b8e71ba9dab03a246b1469c617f5bbf3e502632b060c7c17145ba7df290ec310661480de58a56cdab7a2e5a8e298746eb1b7b8703c5c650456c567056451e209148059a59af315540e448c0c6a7f48df9e22f373aca8be4df3bc9bda80e94a92634a612afdbfced39194e124c07748328698cc21f39de459b4cb08c6c73e80fcb6d0d86adbea470a207b0575f180ddc0d658d7ae66b2166cdecdee265a02e56bc4880797f0fe09c081788f5bb507db2406f37a2743a3c22ee0caa51ab62ceccaeaa9e189ae412f8dece857b0faaf61f81f2bd968d0f6c9048fca287f74d954e48ecf05806a695d06bfc66ed8b5297899dd4b3942424cec559c33ef0da1ca083e7eea98585f89003ae0ba98fb3f51becb80094ba0091f97b3a32c635a12308851e070f4a94502be51fc6f4e11bb7803cfbee43135c82bdd3bc82d58383636eee387d2c13c1866982d7c4f15f0be3bf5f87c8fa5d43daba703c73135ff3aafe4cec43abf9c1bcd16e56d6df85fc38dca4d09245677ed75b585722a9b20fd5ffe9d0436b3fb592ca6982ec2b96a8af589296b0b0ffcae14ec9027d4815bb9b933470a357d0afe5aba5010eb0d93a0fab2c28f84d7091e607505ecada258a551238a2ff68621bdf5ee1246c27d6e8673f1b785f7abc9b88310e3c1ca5e266f2c974d1c88a31e27a102330f924fb3713adccfd09c4415c1773c8da37e4e18ef274b00d462970873b54ad108f588c8bee6a7b4cce157109aa04ba0daefc9b5119b3ff9f70d4728574cb9f57573f41760248a8a8cdbbf7492083cfbf585c844f03ee2e08da4a08d04717b6244b63bbf80d0f4f0477f94de7ae6b2883388ba05b27ffe8a497541f012f16bd9ec50f64cd0d14e1a6c2be8c77ffd39d1d19ef402b46c0c41718ac406acb1b71fc044b1f93a4fe98fa8a0bbf09caf9dcfcbd8e8ecba42e4bbac9bb5de40f089b86ef71003b92a3fe385bfe603b098185d05f43819f8686b4f4e14a75463f2026baa66789edc52610ca8d3d5b11f10672c70c80effd7ba0352b2079de6910221ed21c487a7367cff076e84e1cd3ec625065d7a9b8ce4eed9d91c8a72b16a4a50d96b8a00921695a00167b53471e79aa445c656fc0d41da64d836ac21a34be767c514d1571e500fcea435d1a1d59a6d07140ee4d1a4014cfa8a6f0be9c334ebdea053c842a06124dfd165232c1a2ce63babadd8a56fd78ffbed64b63bac3b49e5af81c746253bcfdfd045deec785e0e272ef8c7151bcefdad6fa2bea962d621abd97f9b5cbf1eab792139d16b51e1f732326a5e02926817ed0bc4c6c4680e42e7d5847d6e0195c402e59290ce8a8f040a70980eac1a0bcd3867ddc0f2de9b204514011491c8dd63a371d331b2edb870e76e7ec5b27146a0097b969a6b157d00f66ce53b71598b71869063b9a29b23f3623837385571962ac29ac868301e2ec0643bf639b074c8a28f0a66acbd0ad77e5c86d01cabd8fddd77a4fce6185768566a6d98e679986aaf9978c49189a2ef1a218977f4d2c34c5027188d816cc918061ad13421be77fb910ee5aef5e159fb74169d7763b446e523470409c4fc4e76aa6d98f120013d4af284bb0a8e9eecff71b8544f9d3815062173ad6d4e9c4727cd6395bd3da54237501c73390cc5c48683d780efec478d2a15a40a5ffa3455f52c092993859fc8ff9c1ebb308ed03b5b88f6de341c3be3ddc96f695d68c1562b85806e162f1b07c5f10a1213f8d85f6b7d92e06d664cda2ddba47b93e2922d30c3bb110405fc7dd9213812
shared_secret: 8d99392e447dbb7f7eefd329325bd71d1d984cfb01fd609c3283a84fdd0f0138
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 2fe6b9cf4510f212839e348d671b3345da68a477f57513ce363414e87299a717
public_key = 2970cafb137f0e7c060db72de03a46d8a860b0cb2a45b462e5530eb566bcddda2315a633ae5054957cb74df537c30777a547b0c6e486787c74c3d242ee34158b212f4fe4107885b2d3da2224803e73bb282cdc8ca0365eb70751c3263531b31dae5a29561316003b2d781790cdc2ca09b65ed19995765263f06c8a1f3378d46c19b1b46a43932952a37e4c828e99f95404075b013b7471070422fc65f9c9965a1c0cd0141472fc7004f6319b548c19929f792ca0d588208ba4628cf2bbf7377ddac05a058308b7fb92cf55584a381204523a460310bba06a88d4b69cf62fe2a71097461a8c3b5eb212337887a34fcb278c59931f28a0000227d9cb9b1b3753dafa63e893c9783764bd01b7f668b83cea1e7fd94913a405babb301ffb6b57b2845cb7cd929c0acc7540e1bcb196679380822c7bb67f732a3c9ca778b60451fb03755ba151e6b0bacd1129df5174ebca123805beb8e91b840b70643713272ccbcc2b80008a46b3a818ccfa6ece2c3364f373fc8c10ef4b4c95955052f99202362bc3020cc2528486784784095fbe10b4a44732a2c6c0b2b50d199a93c544a00980baa2f5cbcc6a3456eab71c2798d04c9a85827b8b654c962b7e4125cfc0f82a59632462d656b9b96188cc89373a6165c287bc890d5ed9500ed08ec1f2822d718bb94525ce81cb48b4999e288b5c90bb7e3647ab26a7f5479199f9198fc950948605b9aa0c8d0b133851abe4d77aed7455b70410b54a00bdaa166f0b4712e3916a70846840c8f3f9c80c8a95c912bfef188782974eb372795d96cccfb6c9209cc2cbec64bcd064e238608ea46f841ac02d6aba8ba9bb251a381777b50570a5c79257a964190e56aba3b27c708803a2e6909a6920f546c509a7524d138a9c2c839f34a6a814b10ba4642b7214e447844d553532804154b36f688715b203cd576274445c98abc60192f603d970c988b42d6cc250b4349f2d91b50c123875c608c932a7f85bae2cd54b6de80be13914f2606cdd9b03ed83219ae5623748972a657e0ccc41579b745b3abf6b04b50b945f2f2963504bae804a261254ceedb767e252c64908abeb94669a94cf511b992c475d99939095ab9b19f74f75d30efd58beec598352108e1ca648b5f31bc7071c86aa97c5fcb60bba8884a3c72414916bf68a277a82b78857de531611ab7c7a111a632a64704458dac97dee2442b4b05a378baa74f34154bc8c191591eb2196a4d3174c3848b5f02f2351211f605b2608c9fd8a101b658599b87c65a3c2c7a266c02b3b8beab84feb0071c25a50b23ec8acb1daa290cca2ad6fbc8280c5cadac42993c083a25338150231cd134548661d645c678bcbc0e7815da41a14e8eb123c482e2831a1ab0399ce02cfa1a39a41c714bd8c9206d6c8c922043a235cae2bb6dd1ac430e22947444ded7447e00a51c13308365aaaf4da9dec03495c73295aa9259d4529eafb67dce58b374066796983f06c91d034226aa75afed116c886927e135564e4000cd86016346b56d9864c7abc6211a72cdbcd32fa869cab01f1da8f6bcb84cf1441781c6baa263ea684cf96a1277e2459ea07c6071b06093985b047b791ab6e6593be230099308a79376bbbcd71492a4a4de83a4d70c290aa05b74a8c80fdfb9293317d10e07615acc85d762ae35b187c55060c912d9a2a09e995afeadb874a5526cef75fa4701e9e0a5c082b92ed3b8887f0bcca362b492369881373ab878d00054027c4cef0c07cae57b30fc51e744653316591b5845c0a47492378764769cf3846b263ca6e086835cf0197b5025b2a960097e57597327f28d4b2fbc6bb241863a2c96d3242a031171042fb40afe8a75cc2976903a603b96019f4c7420b77625470b62287e03239e5008c1297888f5322937457b9467e52937996157e50764537ca495ac75fbff53dc1e8cb77002aa7988604b0829976c8e49649f7446495a7548227ce61d963da3bbd2705a8dfc73f091c20e72b77f6640a14aaa30134a1b3fa7083a50cbc720bc9a802a4208568e2a2ab065db245628ef2a138ca1d71fb3f66d6a8aee513f1c80b64a0bf38f01f4979a975054dfca823c4165aeb1876a7a81fd6920974b516d6b3a1aa71776a264a32447240855b84ba0fa1d35f07a8c11361040da933c4c44e88417b585c1a1605c68ce4000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 6899d650581d8ddd73d6e7095d24e2962ac573877204768c66a78047649ffd373d4e0cac20e0b98675e6f50962871c33957b5a7ba2af2ab800ad728c2d0e70877cc3f459ba53d432d45f4c9ff4c951c35f14185e01a1fbd735fc3ed84063b579e69c230f41af67c9cd7481fea81ed64bf248c63f56f81115ad8255a172fc99d87d8fdd6db00ee407618c7877a2486b6fac3b8eb7bea62c24bb5c5655e47388f2108ac36d5e55c5511d72bbba65706ffdf297cd0788b4c34ead564e86e78c605359b6b344380a4ec73a4f64b7866a2eaf36a494c76adba39158a3d1d3b41973cad055780ce211982fee596ba61e5e5f7e44cdd8b1d6f866c708d20403760b9fd4abf31a0573afa130aab5bf7493b2365ef5437b7824366fb3ec967016e2da547eb61276be7c5509c2bd5e16d8812c034f6b4c5a7f5f489137385ad5697c4312042303a5d7f62e398bf5fcc758ec1475e7ba671c656911bcc32ddedfdb07252ecd0eeea696046e3fc9e564b2ffca11562191c4a1e4b31d9494961fb66ad44f24c4b0d8d7422df106663600ba380baf53007b6146c923412228936d7324a87050e62b185bf3700959e262fc64bc4f2b55402d57c63539c57272240f4725ea23d389b17d6af64e864ce3429c9c0514c9b384d79b830a9c6fe12f8781755d53b8af9bf81e4784d9780ba6ba0ae36f89a99289307481bb3955075057648129349f1e0ce4e750be53372f82c92230127280f0f393150c89715a43eaac8abf538a031155661b489b066e915505d59ba40cc0b5a4b8de7e731533fd06dda44e65f22b7931c4b8e34a72331d32798aee1c16d81e06eeef892e7858ed2e9c27d21a3030567e40a369e21c925a26712e1ad6344474bf8e9539027040eb4b0cf65b627623ddf81253c6cf002f837673d2389cd296f9abfcd38a36c6976b03432c9100c7ce9bc862d2c98a6dc2f931f62e471369bbfab644f8ae37deb65784e6f5414bf88cba9e6836d3fa3c0ab7ceddd81d31e94c612224270fe79048688b6d8d46acc7d656a647888a469fdfb6ef8c8daf78a2270c5058e9b87d2fc0e4f8a098c1cebf96e06ff1edb382e545387b2314b2f7d4a669dff20122a0165c285258a39e2a1d27c5eac3d79ce0cdc64dff98a8633882db588a34b93a1403f6a739bd056cd2d6531af36a2701acf47617024cd1cd4b9b60a02cdfcc6f34e4693eba3bfb32780c573b4482a5f6bf109c7ee51792252dc119a5e41a4ea8f25557b64e500a83a6d8a839c456775a9ccb906a733391605bc487bbd6ea7272325df31cce2093649fa8a379f4977801240ea2be8b1e6a5ac95ba613bb2798bfd1cedfc34c39e1c43cc094f8bff34607f8419bc3ef2fc0c37075dc49280656304d2f642c5ffe86d5cdea4fe96cc8b4451954e5d898f6cdf7e7ec5af447dbda66a254b964df9e8dd565d46cdf04dd2d19ea1c7400925be2105e45343baa9855c5236dd70e042d0153c904d30fe45d087b0f0863ec603ad74baf1836b18c91d98455f3e6477936dba7379a6072744be6d4c64bca89ac3334ba727e0763f0ea52faff3daa52de9fad1f27e566e7a6e85914a02bdec5f7a8509f80a616f6ed66848d4ce8920757fb7611ee7c70366ce847fcb62a94452dd2523daa21c759f36cd31337afe1a5c8e8ce8799c6f03873f58bac3649e0d0fe6adea0199ef6eed64dd1e2fe0bc606b97ec8ed1e0b567baec2816273b7280ac91b05fb25e7467e934bf79025f5b4060a813c221291cb307f7783d5877987124ecab1d9d8c8e36c10608871a92e8878220f593cbd4ba61c35d2805500cdc0b145cd6ad2cd614481edbc913733e3a5104b0006dd26e871df58f32047701b2420d93bdc2d0a2474f7d9927e7f196993d9792e30cdff67ae89bc6a27236a6f0ce0439d4b04788765943c2be5c9fbc0f139135ded84ce79d876eeb37f30371194c8eba42659c185a10c8941f9fe9fcc722183ba7e22a7885a66d8cd10f214f4534171e0836d86368cd04d87737923da8801166afb398bb345b5bee89eb512cbae07f192aa50a932a5d92e909e65443f4004fca49de5eb19abedbf57d066d134e096e7c63defe4430f8e1886bdd3cfb8077f7196584398589ced5670c7be91d715a20f51603db8ef35724805eb1c270cf16b282ce7c79111e4577a0a1a27a435c070d6b3e89dce1bdb53826fe9a05d86e586ecd950d27247ceec6d
shared_secret: 71e358b21b3b98d915b70e9b877e94159aabe9df32737c71c50c2f99d7a074e3
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 86630b4f72820d19e9941784183b3a0d770609becd6fe0dc463cb6edac432d59
public_key = 46e77cf311b99822a8fde459d7d01210db0ce68054199939e8156f8f7c33adf5bd5f2c54c6bc70054a5b8e305d526c1322e49f57c47264091e39eb0c72a596ad5575434c4de07c0bbac32f7ed30a0930221bba0aa75140b0c97a6e1775e1211740c23390f0094d144632169e4a0c2534479b85546a7fa65694610b2fc19488a5833aa7bd0ecbc6dee36997a900fad18b1c13b7cd381b1ca598038c2a4e40ac374615ffab46b3cc992df777eb0781aec573783b75cb426283ea01bdcbbdf8f8b30ce92f46cc7d4ce407bacbab2bfa27fd7792f43ac0ba74b58b332bb915be649a573eb22c12b6037b4a8cc109cb4495a337e42ac82c48dac2099684bd01700b7da007dd8039bd6b09900776cc783ca114358ada02cf5443c9bc6c181a6c86daa79371bf6e6c5cb68b7255d592796bb7b38c5f8c655b2e480cec127a2dd4aae4b23c44d4367de78e74797b64b0ce07a36e73613ddee8a61c5c32f865119f1a60b44ab5a28374af3324e68604bfb33962fc1f06d661119c0a081c45dea91190c4cad6b6253ce560d4e7855a64c58bc950bac88ce61b76691a93be4b81c202768c984ba2d9122cab4880942c40d87022b91c5ad817dcb5037b835dffd916a2b35c09f782ecb72cf63239b6c33bd73c0efd115357b283bd6512c1eb3ede4730284328a86021fa805ddc55c96c1caa3832857cacbeb5353453638ee70669c4dcb6a10c723b18c71dfc44fb5600c0f8cbb35c6d0b075335f6bec7ba1306766591575b5d2b4eba76a84e326b1475b5ece6c3ccea5e555616d38c03fe630c3ce56d3ad73858539d1718b915fa703996ce39745831b3c93e4829cc5677e5a79d3b1794f81816dcc2c5babc859b0966c76c23a4e66f1031634c93b8a51550d7850d5407b4e2d00ddfb5862c1c570b778042986f66ec940c5039dddba773c9a6a3c10e370714d0a4a43300a7b06b01aea6b6a4b5c17e7482d59bb9e1fb16897cc0340c5b65b9239d973c06d41f6e7b9f351a22b8eba6ac1148d91bb4f8959395e6a6ab996fc79bc8f0f7309be14fdb65bfb0287771908244033a3975ce2ec096abb9c15fb40d33a074fa2c84bdf7b1ee94746c42044be55484a179ec5c7edfecce56f9845f29c7c535282759c2d0a2546a13bf56dccc6d4463376a46ed05ba7f54577f26c78e2aaefb0928c36820db23a999e4b399b9b4fc864444d665e58ab24577533aca26acc5c512970c3a84bdd6fa7c7fca6c60eb73a1ab79db779c208c61a2f5311a694dcb7ba37ef7c7db92587d4a77fe3665036531d12c1adcd29cd2ab733e1b2d3ca56a2c7c9f7e3b96d6355b73c4bc4061ce276308b449cc0660b0f9c30fa4a62005f836e182a77e0b74d2b86e3bb6a63fb58d362b9496025bc5485a086808d3779ee28038d1939c5e39b645db160059a04e1b8e0e532686f29d34467fedb02236f3bb0b699c68726961f49824d277c8495c9d804a61f5320e61bc57a85bef199700d18a69e25331c41646abc434e6033d4abb30f114c35377365c51f5173769c315edf076e58710449763af61cc316b5a3e75346bba705db322cc683d5258a249a22524db0e88059a423c9b55d173eca88ed47cc4711a2ae295b846fb113834ab688bc2a42435258b9b1be648c5889230dc153273903e06aa2590ba5d77a63a16853d304933157288e03af785bbce36067c296a18cca79a18aefa33855683becd7b19b3890de40a24d6d389460a4a66378da2b82980e61ff0b144bfd64d0ce294e9816b9105c20c2076ddaa1026c68e50982cf79ba879f630d4eb8df663390307902207950b8b9db571c306a033272ac8976133a641c585d43e730a4969d752072bc6f180180e0ca0fd9c27d7845be15cbdbdd44c7c525fd70b5479c18a24800833c9338a5635034704db0443307c616209ab2172a0bc42c239d87ced11779625315ec168c3716ae62a209ed7096ecb83d7939593e519fff06e99a6a09122c5bf20c5bdc09af2402a3a605318d68c2b31a284b33b1719a4b6c7a5fbe4500ce23f7d858456f47d135a8256c9b40f52c37d07c728da600f127738c027d131b19b0070cbf9322d1865fa515471d461d17c424626b305d68e34838d5d7a35fb91816b65a1f9403771fc3a8f22403ca8616f89995b52425d618a63a789a0dcbb9ac196bd6612fb69000000000000000000000000000000000000000000000000000000
result: pass
diff --git a/crypto/mlkem/mlkem768_decap_tests.txt b/crypto/mlkem/mlkem768_decap_tests.txt
index fd46649..8d8e747 100644
--- a/crypto/mlkem/mlkem768_decap_tests.txt
+++ b/crypto/mlkem/mlkem768_decap_tests.txt
@@ -1768,61 +1768,61 @@
result: pass
shared_secret: 5b357f714a293b6724c0dc2e2c5509676782a9dddb050d88e6efa0a6d09d20b7
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 00208080e8b3938b09aab715a0b7a09314c3d2aa03e900528a209c655886bf0180a0775a1ee133e543c17d7c24407131f0b813a9287c5c9939d43ba2c1f064015c1babc910d1024bfb46a3fbb1ae13dc5d8bb4576787a592495786a53d4c172cbd3b2cac6a2f5ab68fcfeb2a67a997d809800615c043e4bcc0985de9d671e6e0c8b071a20264c457c13b1f4734f234142e86c23170821d068210b29358694d8ff27e89c59264a315b6591d97d90ede633b68fbc36ca96b823a4bc66144b541cc118b0d60a66c89124d9080ae30f44b9f4793cfac65ab8b8cd65ac81cd95de566ca2c19906a955a04047052a699e8a132e2e48aab916278c49ccd1ca0076b5254784a23f7a8c164229bdb9b46e1c7bd4c74639053cad5226c598918687fbc50323f086238366c4ad9172346626b54ce142053de67ce8867cf599587d0a47aff0a7fc113140c18c40bb31e2340822cac294aeb3a02652b424ac9f1008a592ccf70170246e689edeab03dc0249ba59fcc6477fb668038443bf9a743255310df11b4c90a97bd212a74d5142bc6461a135ce7376995372a1bf919e3db20f22c683f488395a95e31ab13aa707c59f22e85d892830bb550395633f6c87df28401865106b5cffb75729391767522ac236072250c6f4dda196a90bbdfa183113c5fe2e31ba1187b4f682399f3c6c0288977904ab445c0c1b9caca030aa639b35029657c1608e3a654cbc39f8f096414d278059a6f56c8c838b1879b00ceff668190213eb15184a57706bd8c9111667f52a656d161bcb5e7cb8ef5beb6756371ba4297397eb6d0c850aac1e01025001b71a874a25e3ac16450228dc33691b3112de319f69ac29f2a1cdf02a0cd77319931003910331a6268f42669f4a90e79bb820e5c98aa252dcbd056318a050ab71f5d60028fc41594688cea4a95b32529c39c582ae828016644faf4b7b1fa6fd9c305807c43dbba54d44273669bcf956c197ea3462a30be3aabb1a6654dc4a72bbae53982ebb986e249d9438d66b65fa15b723267ce1fc1200bc26656d7c4e1839e02927a96304460a34a9c0a22ccf15c7390afed4a612ef236f9d00c22d04cc1dc362c08afd0a16536985f69f6a15d6585c410ac7a39599c683b9e67a33ee299a5000c7e4acde611bd6c817b1aeb1373835a245b916620be6ce8093f88635cfb619a963c99785cc5c354e5d025f954071e380876408fc5ac7fbbeb4c532b1f1be67ebfacac4cf907be9485c6da8da380809ee102af0c98beebb088c13d29830e7fca4dab8c1e8cc87a3b4198c50686c82626c41414d50878f403c10ac905f39a901405b93366a575338ed7d66c0a27c9dbc4af2d217688dc3909db8878000af307a989234174363f3cc35c25a42d7361ccadeca25a484a01967be2a65bf4998d57943759528d54e498ab18514a5665b87c98339c3fc01baaa2953abc1aba78778b26d54bdb2ab69dd705d6953dea404adf8c82d29b932e144f48a2661dc2129e6a2a1bc5242552374a504e0d135e6cfc9fb91a492e443c608c6e5342361aa8205ac744ecf974b667a6528938b6085492298e97ea827d5a4274ca359a1811c71a574dc986f4262b2e29256c4b52c9a22c3f168988cccad7dab73b47cd1ca43c7e036d41c94f8f31a0de404fa38a1da0992933d752acc0407234883488a581e340bf5a8dd7112099259ebfdb0cb094c8d592485f25729e1844870a3d57d63fe9c1295fc2c4a374508f359a7e9b062348c6c807322f1a2dc887a20ff1b8e951b103698492504dd86babc01339f5b0c9bdb01b65514c8df3a61abb7941da84b8005648fa0e5b094e54e56a56e8c840371349820dc3f48ef0fa488f180f57b5c0ad663512467836d6765f6517ebd0172d886430357baec25c709b3abb9c01dda27e2ac7c17cac7511726a39050fe92399e14780e3288ae775612b2c4baaa032af561d0356c43175c6263c5d9cbc62f57194c9f76fb5293e86d9a95a641325013dee98067d513525eb5d2f7cb5783915d0917faee635bcdab95a61592fdb1de202c439dba37a235e3888134249044519732701111385b9c91c2fc96b039d6483c6d1bba2223cb0f612c3f7c6dc62bf64a04b349a0fab73290acbb15ce1cfaa15c68d896493e67dd9a518782b35fe141a4d70bf33e97a616c51193b711b04a40c9634bb62726f748572155667146d311016880c670067c653e9a8dc0bc32865adbf41ba99f19b2dd9ac7998bfc8679c689a05a5038042885742a68ef84c429984588995a6cee077c3a099caa7a5d3761cb4411d1dab8fe7258c75903ef515b6b0629ff659436ff687e6625d2080671e0cbe0cb624bf8b367e780452ea3713804e083aa6e0c7adc15618cf223b3587a364320d56c58be8f037f89cae0be209ded78cbae29ed73767ede6793f0051cd5692f63661a257ccd9d859a92ac08784070bfa7ede4577e7ab1ff6c7b159089b8dbcc5ba56357b2659a7a04c8748a86991b2b775c2015a4c12341ebb419e1244396c233c161495366104b8e29979e571c9614fe10c868db56cd934c5b2d04986a70be8dc25d61cb6f0054d5e4000ef72557b712658d962b1e673a07222d59bcbc4e8339bb5b37cc1c2bbd38780f8233843ad420782b4951c3321888fc3b488897c8bab046f79cc456bba9f666ba261284a1285bf1a9a9d274d9b87788c225c0ffa20388183f35817e5825d450a1eee881f94a5a129e688ce6664021356580190a3ec5ed220b8a5878068ec5cd485816f8c1ee05c3c23ec0d0aab7f73aac249142d8992678b38410d41be710a285d3b593a8245e514a870c3c348fa45f99aacc464b399ecc0cb3c306c273e5f4c671b806864120a88c07caa53a550d52c5641203a7927b40631e21344a9337da2d128dbbb5f97b68b8e57cfbb1a67ca7741c60c2533e49ece409b0492a2e81523e6b6ad655a6dd1870b5de3690de3369c898b557886c4877ad1d67a1583bc70502b32a44afb9b60f88838eae005e2703ca26355ddc479bdf1a93756af16b7789a3221fed9a4e468b710035060752e884c56034b768d0a7106a4bebde7622bb46b6649195301192c498bb555c653c42f6d84883be82e8fa56ea303caac534014b6bbf38a9f73283e5a40b36e36c9d8b1a9856aa7d9913b22c40cb103b74853c53c3ab4ce895388aca8584449fae927b16534f48b3aaf350030a8460c8572bcc527f1f62bf1c5a9bb8ccf3ee66f66dc19286782911a6765c72db77ac0e976a2bc114a1b110000000000000000000000000000000000000000000000000000006bb77bbab15f219641914e23e02624045beeb4d7f4608d5e52063d1ecdd8ac5f11536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2
ciphertext: 1a2dd390e05984bfc0f55ef96da5050fd9bb03891d4d2ddea46c463aab28fdfaf63d4b2e0c9af992e4f1421efc26ae86c2b296f6851bbe2e898b8bdf4057e875d4a98469b7d2646edb86a5eb5259341e0d14986a8ccf93563bc6ac067f8ff6997c2e7bbd897f02e844f180769fec5af9d6fa017022cb0af622b6e4f7a69d73ab01d3d09067b118d51805e1b6413b7a9e0ef292a6fca18a8828912a2db675f0244cd63d9340aa3ca00dc5d70c915b0061664b1e1d64d3d4dced3ef739302f1063442569efed0dfbe8c019c27823a3aabd865a47600ff9e24f748302bfca1bb60faf4105889a548be9ecaf266d8f02d3aa4997202477a70ee71b6e79dd1609acb4dabab72a38448758d8debf55369c5d3e0870ca193018e0ae6d0ffa33b93e962598b43e89d5978a9d55a608b98ceae5e897363f8a9e253acf8af560c57e07c4c4bde807620b6deb76d581bf92b7f514509446f5c4e4d09430b1855e62854988302c931b9e624644a636ab8acaec56d7673b26852c692e8325fa1b6215f24ebfb388ad1022fedc0bef272c87e10dca97df1e63f1a0e9582daae0f49e30c6acd119f7c4eef59d47443f491df846431cfbd23900341086a304589f52de1d862c26af32095e922b92650c68facfc13892430d428f626fba00cf9501e1e4646e55f5304c806b5acafe100084d7635702139725561522632e7e3871effe883298a7264a411484cdef78f9e721c0e5f3937f2fb7d40bb91620e473f9b97adddea69b3ac682e8aea2513b985fbae268176c1bff90e401a31e729fe8b76d13b5c8c85ed833d9b076b5e11acecbf0e96edcf8ff562255124edbeb5b9117cf486f30d7883aa353b9e433a77ac6912cc8e5093c12385ad926be1d0893afc7e64fb9ec55d3285e01a3ca63f3c07b95399bb4411c3f820f53d8350d1979ee9cc6bbf2d7c92d0cb2fd0a1de910d92589cf1aac29992489bc179676c31ae768869398fda50ff14860a1b4dd3bb2e4ba8b2c87aef7ee00d375956a62dc1e5d548a59f209448e62c4b1221631d4776dd5192154d637217d31feea1c4cb3ef1903b8987f4c184cf3d6b5355ad53c7bd3e0ae5373d9971115698214a93e12b98489cdd75028cf22c1da41096daca95854b35d8bbf7d0d4ca2727aa511eeb6cec5352ed487bd3b00b261cbabcfa9f082ba7300610c6f92725d532a86e00b2ed1929a8be7a342c079835a2285569dca92a808049f170fba39d990884ef39ca511aaf9a713b8d78973b4f4a2fde7ca8b6adbdc5a70241fe3ea7d005b33e48cc9fe6ce5bc2bae0746827e548332adf83f8aa707e703fd688c494136d8dfa50961a9e5b69b542ed6ae0e70ae159df95dd9d4789e284a675fe048585214047f7f6819f7f011141d265de9fd4c04f4ed5dead63fa4c8938b2f42108d263d5394d164b3254294402cbeb48663cf1ab2c296d6ada107e8aa5b505da49af96e1cebc6b302faa148216d38b9e8130cc654974ce299172cb875742e62c32c063ffe7535db2726f65fc8f600d4dbb1a20f
result: pass
shared_secret: 54c35602dafe572b99aedb7069a59c4f7818c860b27a947347657ac1954d6454
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: c5f6c739c640b093956cfb9d54272b3c704d3b364ff1c68510b875c8c29f30051b5f60b53f6341082252746b8d4eb52b3f77c818d42ac776ad393072d458a28b186da2b61cf64bc6d8b424afb49a3b2528d4863c876aac69b7c7fa95314dd36ab5f021ba8c575ca458c469409b71b31f3a8e371937405067951c084b6a832ab321642c82f33395b0701e5a677c3c783a47d7a6e474af454c1b31b174ce5285e90608e1932493e44bf48b921d6a58b1b86ec2a38b8ba2a1fe884c0fd608af3986270391d1a42843637d75194722d31bc81b2b507ccc0fdb309e59549a874d09239bec5a41c4e9bb48d6968152ac9d431cc3b290371296b8056ed56898b272b948e556926478291cb0eb1bac50b6718e98b74a1777e685b7b6d7cd6b22bb5846c69149b4e7b292a4153763b768cd5a67b65c3d059464ccc123ac086f9f41c3395a56ff3152fe149d76ac2fee2079653326bdd82dd6f66b6687a7fbe00d9832b09135756c5819b1f66dc44c7b32c2496f63cf077ab51b8626d0918030134b8384c565f0715167b21fab697e84c6838a71176748f12334078c27dda3133bd44abd69bf631badb5f2664f2857c033102ce8284e4b2beb9095cbb40587bbbf457054f4d11bf938af207c1cdc5217b0e9797bf9ac88f3943873c8b66883d2ba5ec7e6696d50a69ba55457853bc526819f1a6fe09973fbd19832312b554653b8441e5eb01884e94a355732e3da645eb849f520bb2bb4327d560612852152f8cba2f77db8d21922da08e60bb9e3b39b9b85bbeb9b1715982d292b8f1017cd3e60447278cc0257898575a0eab1408122bb3fba17b62a31902a567a0821d42086aa6417c259a1dbc93b25003fcdec9f6a5507b4b732a43c444c5825a05119cd089fb2e569f70b4d5e6919faf15d6eea641f5a2875763f42b3991f7c89fe473cc057c148ac58b6c88dce537da8632c10ac851f8916fb7b6ce89ba5053b8d95d29ea5d36c91981042c4aa1330aa098a6ab256ade08592a05c95021606adea0ab637824214009c2b915be450a1f7434ea2c7f562a4fe21139c2652ca8785af3208f4927abae698dd435e90e7474556af9b907f6d73c4ee64897dc74c6a876eba1b598e784b8094232dc62bf1119ef764bd1a3bb2d4fc7de069273a223abe5269a1403873087906db164b58435ef41d7d78b36087062419123c8b1d54da918f34920d3302ddaa300797b32c1c81b82798e421ab2589964334714a75cc84548031d5810fd87890a1932c98bad37c860bb15663cc0e91880af1947b8a26be9183b648b714f763b81652786682c210301852776aa673a1fde470afb56eb0b0114895638c609d8d55585d68c165f7aad64c1406a165788c3364667f0a3c65aa300fc4585e959abbc5e1b316aa108a1cbf703965a74475147a2d323b7295d185571000e43b9120b76fb0105ee7a385965026e8f8309d4badef88b433a59090f88bc4eb4ee2f6c1f0d880057b477e628bc35b023a4c9ab682822556afeb32b6c9088e35c107e2a43506c43a986a0420f5164167519c4029b47bc81e93c1ec149e6083b13589bd2a9c64fc6247ec323b8cb73cb9f9ccfb8bcf25617a87a3c2d8b5158ac8661dfc789e92cc47340db6d04313d3a689b357566b9743cace5d5b906a39249f1c2bcdf335f37aac2565932631ac318bbb7ca75db36ac198ac6b15a02173049721d10f7521a52f358f35f3719269a695a4b0fa03b32d8a209aa12a5d786d8dea4ba05498ba222eadd647dd5a397e655ed309883d76326231a6764a7ba4226567022d70fa20cc53a045cc5a1fc54abe0189a4a2b6bf8a969d61706944bc59c6add2992b6e562e9732973d32b97956203dbc523803ca0a462ae118633483cab85c645ee3ad51682c0596378dea5e93bc7ab652648cf1954745172a75c2bf6a3177a7841b089b6ee911149871a9d987c6d499b6e0c4d15c9b74685401b680d3e112d6d70bdad6a3f9954b0057335ca36823328ac4e124d55b9932d548f58b85a32844e9f0260d8a4339285ab46152bbc05a967c5f16072f16178687b0bc06b621f5a4a14ef86b9cf1bade0185c5c52b3f2c407479467e5516ab9a1128260317605d4db250e8f4b59bf28a6ac2606d280af28664b75092fdea1fe9374976722dff579728e121fc1944891c586625a880a7bd154aace3e919b841b1f5f8c0fb841d1eac1fb18002ece216d42cb401dc1681836c1198653456c9392944054200a3b95b986a396d443a306b66018b525fbbb042e662ec108f6b872749d3287440c12bd07d1061a524a01ad7342d74f8a4b76222c5a439eef4235d51c9494602f6624dee256ea7fc09ceba9877f9332bf195c43502ee43c75e78720c306c2fa47f4ef6b7d69038dbcb8272b334c98cb665b306c04252fad3559eda4b96c14bf50b78d4a9a37081a2d61cad33b3b9418bba25409fbf4a5bb3c775a43b39520b37b5b82191b4983398858bbb0c6c8031b9736a5f76cab0e647443cb6d983a5e0a6c27756cbf471baa17870015566db8c8a51aba969e976a1c6cb2be166f20680893950ddf09cf8e3827a2a884a7a65d61c7c70a522d17ac0939625fe63958741255b012712e76fa8da809a8cb447d730d4097bd3e86471019dc8897bfc82c3804a76a38919f7cb50ce79bc13ec4bdda215bda9789503aa822c71ad8107a35818a7cb055b303338e465933565b94950c11836e8e33ae8093b0aa0c5d5d555cbec5eb4190eecaa1525014e8a341e9400180937afeb126c278a5bc4713fe9c417c50c1e47c8756fbb6a6b265bdffb4c1456c5b7d7a895b6932dd9a55623341354549283ccfb36abb3068b2db7348bdb1172318357bac12422ab93a32b453bcc0faa4e8e595b05a145e614aded6bb77278bd78907b828b18a22aabea48bdd69cab061522a618cf39406f6c78cb983354384415d8b857cb451e01b24f489a3133070d775307fb61a0f6d56d1255c4d4e18c62e57d8422080cebc919b81e67c4304cdb560ab16d929413af650a53f870e8017e90096452ca3ea648ca644010d34bb79c5898b775b197189a55840f43371dd9cccb7b4a28a66309a515658f06acdddc47042acee250a37632b42af51adf1c0666902fe0acbfc8f59127753a40161de4ca07a5c8bec0d8ad3141487da4a842147b9de945e4962699033375548d680b88ae8354d6114efe284517778eb9b7957eecaf5b4165424a5f82f100d02b7d39968b98f69c2cea1a0b39394f49265b492ea8f4000000000000000000000000000000000000000000000000000000050f496e61849154f498d752102402b70d58f7e61615f724973e5ffa9065b18a2e8541047591efe1847559704339d0ddba611d0ff8017cdc84e61184715c93e2
ciphertext: bc07d2caff561b4645e3878d1de0730a88c05f46348526829a396f05a0a00603f0e2fc79e13beaacbe903827c20d9d687f3fb4eb2a8e9335459fb21380b8bf3734518778d8cfae9524ead1427c6a2dc379ddd2e985e2977bb63e932ed59c83a8b9a593e2adba0cc5f106620fc8c6c4cba5106bfdb4105def0c1d7b6800327cacb964e1d4ebbddfaa15b279115a1d05754c0c8a715fc2fe5aa09af7b96d5a93e758458aa5af8cba03b942f4d3c0fbbc2a45d3f7af5818d67219a72f4f538883ee2d3e507e2dbf4f7748446443bb71bfbb4eff0f57d8154d29f5cb26cfb52c51b676e9b1ac08786d5f475cbbfb49697a748b7902a83da49d285a48c7e9cae74b66a30b02a353a287b40a66a0663e7a71adab7d03272f2ec32d47097d4c303396db3e7b7a947f467a70646777cda227d72310806107b5dc16cfb36918e88784524e3a46c30242a40811593aa8f72c742f885a9623534753b2bac5e29110a1a854646abe1c0337251e85987aa612f3a095409a5a632af14acd19491577223c278b18a9c3ffa7f72ae49b89df6dc45ebb2803ece96cfa94ef9ef5b24fbe686ff90d130d3ae953a4f9ee6581a346b0612f84cb6ccad4fe94a53602817d67c61a9604d288319f5933f4a97dcc6ffc36cf14db593fe27f873be712186a6695d949d4552dab37e36e2e0ced229ea9dccd6d3bae22f9fb888ef400b594ec08a15972e8d2478e50f11947b52bf384c731b0e50dcd4ba116abab8af3b880c54badb11d83b4266d3e5fc25c2c8dbbba12fee2fa5c2017987f31277a67ac702b8dbe110894a8c81011c7c662ce9ab96a2e25cf5056a3e202dbf6bd5bef2347537f7811637e932d13ce02283d48d032c284b6cfb84fd813b6c3421017a7527eafcd3fbc5d4324b5351b30abcf1b366f424a8a0b5edf6bc1f3e8702b03eff875687c6caebd7bc15f1118696cc63859e3aab75aa9acc58484da7f2bc9a120844e4830429c0eee2b2324890bde302bc93f661edd9c04e1183528482f9950654e8c267234245aa9482d94e90e00e929b65431f986e7bb34524cc41f4b4443646713c7abe6c4131a2d67f3bf42f0a7f2eddf82b5c08a94d99a0a7d14c1b0b375fc158b7d4276eab22efb438f0d0a9b30e9dc127026181e42643af8da0b24bd10a532069392724948ad722b25477b481006fc1fd030aa62b217e6695dd4c7ad34dbfb75aff1df5774b061a4ea8526e9bcdf9679405c0d2e40dca00c9e80840e832fd663596dc55f602d094253893405a02d4414f119d23c4544cf832888db5ae8494dd2e8ee357753515d929b8a37b5b45446ffac20fb204b5c937f6344c453ffa449fe839b4afe1da61301057338fe29df93aa962a7374a2ec181ffff9252c8af5c3f75ebee02fba58a76066df4c6acfd5d1c18390652eb2f469d35dd708e63a498c08c5241b2717333904ba0e6e0845dca8c9608f28bd1046805cf7b220498145b23cb18184a259458dd2fbaeb1c383005a0d289562b0a9daf7d1e320aa302fd3d9a02c65fa901d46d4
result: pass
shared_secret: 7e1b4195e9cb70e6884d3d00f0b3f0a66b4d8c00ce112e1e79a1dd236ab62b26
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: ea53a046a53b7e3298d588b38c403e67b5620c5c73a438ab7357660362ab3822b5e774a9dae973c83a96db79b550dc176f9b0182d37f12118bc96a4982249a352219a110704e4a0ddbe545e4f55cfc2c50d54cac33ecb6fcbb3ac2a7bd4e41282476797a3c24f4ac4f60c33da281cb1313035c9c804d755267894d867469dbfac7be52a34f55c0dc642354e52967b043a0e0167c806581b51519e04af675147578c79f492da3ac0748352c6e5c7ff462008cb42e9817155444b214c3b93ff3ae7d44b5c2b659627a833cc18ccfab4fe6d6513dfa67cec499cd7a0d052a5f9ba378bff75033e69ad053c04b74c8cd756c7cc0bd494129e069cfb4358324066415bc2a4d1cb8401867c9954aa8a33f929ca279696cd515bff0abcb6c8692aa9cc076861e2bf27ec360983f775e9f166964d0c43c380366f19d3f868a7e038752d30e389c0c057b6d93a9ae64746d5b3a146d31269b94c7a753412be68d09d820be6890e5db1ec3eab1acb14cee8a317ee7ba0eb6027f13a540b07c12cb1164bc7d295c16eef4c8d9773bd2d32ead764f58fa48abc2a5491bbe00e07965017ebf40c973343704112bc90849d219c70b028ff3769e720c4599098d172674358bcaa8947ba6b874e3d94e623122ffb3984a0b571632be1c540cc5da45ed1c57da1054abbc4456678249a2589544c3dfdb6330ab35416ca49c8046c9446150660b45e05b720722bf390e307445dd8a3e23253cbf633c8ccb098976a68e481ee86b86a32865d9caaf385842cdd071b0974e807710e2b44c598a4a36bb2af048b0fd30bb6c64a539513ed2a5a9c6cb16129cb88d6bc62389b4846a2a0afc532eeb0f055aa85ce7b43f8099cbf194e664c59e683e535ca809d40f72d4a3d5e287b5ca3880d4af1f1523b60c8f811a17b2881602ec0393d54988d63a1620a48ab25a5336b25ca25d5b21425ee54673062020f065693665c68399691748ed8c2b6ea47b89391e7dbcbb3e4bb8bc0972916aa0ee5b90292b23618c5e9a68bff8476fec1c7e382b1cddd45069263a507c44b97663a9c8b4bc690c89d25893c4caca0caa7633bc66f449bc06603fb747843b0a8ce11d46ca100b3243a8617904a2ae48db08ba24bacd5b946cc96b834491a246850c44a0f049bb3e099b3353b28c3889bd4520ce75749b745e65e6442d970e917362cafcc9cd1a6194d9ba41f29feab98320e10234c1b0fa367f7c3a420052a9ace9a0787bbc420832db814e8f86804fb74090146f899a624ee9739ed55c40b3716724b8a8164b8b976130d89e15dc24e2078f24a953b2781b7d36a12334356a6998870a0128ab5152a89ddc84aca3475f8cf849bd762ea7b23bd2d743a9d3a9a2c2ae4723b5c1a3b5349a2d4bd2907d89ab8fe80624838130697bb1d45f873a3416164f862630e96075fbc5192be26755eaa1f33026a1f201a05b6b57ccc83fe9c191b13016a921532c4558b44ff0a26c864c3102ca921c299b38199f7162938387c3598362e5f616756bb5aad68c68e0a34ce96684597712341f391ca6696538582ab0dbd532c7757b5b24b0413145395123f0c4668cd538782b0f65ecc30b687efa78183de47f53b73831210c513c54febca5ddabceea01649d9c6588d68c05e93cb6959fbe348468cb6e7f482d2b0507a097625325a7ff5740086bc203410414845a177c578698b313842dd2737d79806fdc8aa4ad8b91b514b6aab60885a49be68ba60d05891dd1cb47c1850b0105ec15a95c93136f22a170e346d2256a0cea672941335423cde35492967759b4317981c34fb0d759a2b08aeb411c362b2630c4b8ef342cf844206d7a5a3934bdfda95ba9fac912fb1844a0bb62041868ba0e3660a5551951b39880eac2959b5028eaa765492416ecf7a05102450eb20eb2a28be460972066b41ac87abcc28b38a7c92d91779e0c7cc8b42f107b48269521edf0c558a1b767536d295c3a7e60b9de6a8f299563be7c4d33d33940234af8c7764b181fb7b5af1dc88e4e830725533656520af7344e4ab40f6df34a90a898c672b854021d0631c1b1e9999d8176b22a5ce829a240642e19472e635a83c5086f87872f72a62e5fa038481a6861141227666f9203675db45a444c6310518d86a9221c9b6bedd753bb7914f7995e39031963ea056536a96c9b14598c95652091dba9210168467d7388b73770aa905052645eaa877c6f8a45acbb775d080521479314e214a5217835667dc2cc67dac17b0103b1049a03585b30631c6dac53b6d4056e5877786b295fe94c8804b57a027609bee938a8812666d12345e04c92469463443fad1c2188c951cfc6a06c3b8c3ad8856ef26a67b7841428a1f5b69a3fb82cad843a55645b78219d6de824701b0b1f192d4f816f45032b1cd5b465d33b3a9cb2fb04cb271a3cc74a8bf7ab6ac7a00e8ce6a0486c660680219c6ace0917b31595584f4756c9c5273ee36c37d25d5da146e57613edd34795b9cf61bbb7ebc441d575631215a87c4070159136348854c297cf3ca44fb2814448e30eb2c555aa2393bee966ceec0221a278f048aaa6d09b1d801aa0fb369ae4480f051329390af222712c61a59f98a31a03ba90c1a6c34c1c98c0be7bf59fd717ad9894786acb1cd081405c66a2e79a1fd77cad853761461c99218aca3cf4920703654fb9529c106f41a78b259294709bbc91679d0442bb383c28d64683ebdc7b94f4592c8ba2c1126c9dba9377040d3a124176fa33a3905cbb96764bc89a69480b74e38f558b422ef22e390bbc76e048c01129c97c26125bb2f86c4bcd274816265d8c41167223b0a22406d2a193ad3b1083b0cb75f9542e55b9aac02845f59618b5aa580b5b2bb44c192a906ce61b8c368278618d8ca8409fc02bb9b097acb208e3c2a9b651a316b70cafe6b9bdb32ad794b4f018b66ce55639e5558f5a3990475794bcaa06f17093d490fa583e6fd9596b40958359a30f813b940b1e1e4223d3857cfea691eeca944de845c2fb502e35a5f1a3750454593fe1c41662a3b3da407aa269c43167acc98f5f3c662d6177d3594d0cb800087c6a525c586d86c12e941b046625d90c8ec6dc8a5c546abb19a0b585aef39379db926691124265103bbb49cfc4e9100c803b4ef68a904273a6c899e48609bca003bcea9cf82203d52b5f9b65c409ba9503b3b16c7077465aae45d2cd4ada79ca43a9e99a124b7c9fa24a323f6c6bc18b81d9a6161191561f3776740b539479582a46bd913ad73e0900000000000000000000000000000000000000000000000000000009ff3bbc6c725ac014b798e2d5146532f55ca1f580b27b436aafd30679eb4bf35ea63afb095b03165e6f3b9488778fdd771036713df7b893ab8777554eb05f64
ciphertext: 79efa2d537baa2b87a787317162d3dbcb40cb3c25f540ddb91aea6cea9870bbc5a5f86f8900b913fd4154bcfc7c8a463b9b66118c502ddad539186fcb079664f44a5363cc8d80d6a4c09f28cf8952157526cfef7bad2fc2cb69ff03ac39e37d47faab64cf54f63919303badeaab9e59df7040511ae335c5230e46e00a666b994d647d11cb032e7ee235b5e18b1894621ae93ee129823334580381b857cf0360196cb75180410f9fe7558d0e189502a5dbac5b4f0597cb3d1d201f89de26f7b4ec0d200a418a26cfb82cd4496c3ee22f6eb60f3ad2e1af981c238da13063d1746d65f77ce0ef30894468b687b31443c7acacfc3b3878fc9ec56878e7bd1a9f72ecb1706a4e5face0a83282cbc2bd15c89afbe3c97dfaf395a96ffbe1a3f75af03311afc69dbc01b11ffed2aeb8906505e910105806febc6e1298fbb5c0bf501232b888b7e8b285953d250b866a20cfdc7833a732966b3a03485ae2852d0a3fbeec6dfd0ec8015db5de69e55f091e956ab4392834c5128417105541b1145b27175fe35efbf3102277b35e42bd83aac25e25da6c55c28a03b9e2a8135871b4cc49fbfd5598c9eaa2482f249c0b6332a6999306be55921a3016499bc63a072a6e9eac894a3ec209177d07208d0d271c47f8065d0facd2e975011944f7884088768fdc053cf86f31f6d348222c06467fcf8ce0d404a2558e8cc422521a4e249549037d3e8a29e03a9a9bb511d9ffef4c5185a380d874732c9e862a6e8fa3fb72b213dab2ad0d91b047440b1d334660067566e6d2e14765d8fd0a45b9b8e8566419a6d7138e5a106c31b1278d50027d152bc8658d7045cb2297bb8382585b38be2d5fafaa7e8c867c74be013793874f181a9798193dee26fd5812eb469d1b842a969cda65d3440c67b00e6d1c3ae8630165499c1b4cf3153fb5731916ab779a2562ec62637d747d61342d832aed330e5cd794de900fa507d4b5fbdbc5f3ec1aa69d0319b3644d46d9502d435c1b5a329c0d3524611a145e3024595e91c2afd577a422d59d4d54a430f439534003be467b6f018736c4bebceaf7c83c799c2b7745ce7498dc84b9e455b96410dba1a0a5720fe703b7c0d859a42445eee7ca3353f294438a7d463fc3e98f4403f93b5fc4add88cc22db7bba150a2988639ba96cba8e2a0c980c9bf8cebdb5beb262d79e86cceb774750cd9a192ae93d85e60722ec6590beb7df8e4d036837c97dc05c7964dab00034683a576da5b51aa8a0622edc27975978c7daf1b942285572b09c170dd332a99bbf703d84becc6a96373fd1c0b355f063e4c2c6e59f5437802676000a819b9b99418df893b98a8e6ca22d95da2c151fb24a3a0e5944ac4ca6376e6c281b275589a3907c0473282967a121f1792d09a15e9d71e71e73f9f627ef0dd478061cf053af434b0663624c3bbafe0f37d7a32504e9c686f41bf48e287aaa8fadb73fece907f26a9576611ab2176a58e5c1f3e98ec0248a15774434c2a81c7a8f57f9950b83c0d3770d17c4e57582387d6f19bd
result: pass
shared_secret: 2522e72d308dc9d7d701e0b024af9e15627572f13573b27c406fa750df9636fd
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: a7d40e120206cecb9458a1464b96c447db086780708c7435e40bafe1ab8cf26caced91b888711b8b95414e080c2be24d7a622c2e0410fb9c795a25a50554abe8b9049f9890e29531cca88e4284a5bcec559f939061b003510c8a23991cf474ba6676b0599c86dcc0976f3b61cb624954d3914bf28e109193ef1b9efdacace8574dceda34905485e1a79d51c8ba06722150d8a243d69f671c18b1c2a77c990699b72ef5b1c4aaa121a8e5a6cc971178127024166f2593893bf3b9e0db273040b0821051cab28af5196b8937538a680b39251b08051502c2a3d5504f78b767dce91e2116280c3532e9426b93d8cae3e9abc5aa4832c6bfb02a71559bb689f82c22835fb314a5e6d44bc4085eb39ab41555103033a0f4b6aabfc5246c93c07840254989301f88776c06c9f808369e18445058b4d940783d57b7d7901b0d63a6e6512b31a63ce0704028d936462c18eb4bb78accc3dc56884d9837d8632a258c4e998cc536248aacc62f7b9b65191a28a27a1cf44a0d512875ad5112e034c0adbcc67edb84eb000bf3621e7c1c5cad1cbd06f848c5d8c3601b07463b5c0e33cd260a2ec99a972c47cda74229f6292221391f37d20903aa76eb6966195acac6373a41db78b8f7515a473ba04397c2e94a26a6acd8f2cccdc572d4b60e56880fd0295152e18bc79699feb1a0b6f6c7ee19545f4124eeda5755a85d79fc2dddd2848216576e9ab4d07b7ecf77a74937cc1605602c62003dd5abaf601b55ab0cdb37bb3110290f829a742c5607ab24a50000f3191f435427b5345ef884b91811bc44fc4c6de32bdb0a73edf80c8783a5a6b6a2d06657b16104cd62ad847206ec1b87729260e91b2afde6b0f13a87025c10bafa88e1fb1a66b98a5308a2c4f10874324179a2729df786627271ac5a945072beadf878035169c543c0b07acc49241b7feb406f524b71c787ed757a3d48c233bb75d97c42e03b9973cc680169520e400b00879cf2bc9119325586719f22e1b2de163184b2c43735b2c1a8654c92138b90c458421f681136e0d6c417b20a5f8c126d3672a4073942855b127a87ce96c7e34861923b3ea9bc9f0aa277746927f0777814862b0845c3bdc12309241f387cc6f4ba4a9688b947ec8b5603ce88ccac5c35756d0031ab4a5e32f6ca97184df2acb38f724fee64a6a688c69f6b913576af98ea2487db097d7c81dbc2a29a381b2345495160c348e8207e313929dc08412304f6a01c90f6889e23b7974bbd6f081f52dba8baa716b53769e6f71b962156cd44a3f50563efb3b65741aa26e42a3720ce737c7a7ad5c875663bfe36bde03b106647ba1ef098569bc10a0940cd300d58571dd354ca5ef714733bafa4308b3c4b7528862664a8656d16c9c3837355e39072db20af20025306390ef32931e793e33333cfd893c6227215027ab7ba9cc0212ebc749abbc62be483b3e2406a5ca10d7fc534166646473c27979053928aa5445c4c1c26cde40777aca39f5a64161c322135fa176d44b694341a0d3a05de662ef0e1aced53c4ea2762c1333da3f987fac65ea63a17b55c3f681c568d648966eccd095928f2e32af2fcb0674ba3a50350e282c99af149ab1b3f52d3b9f838b1aa8cc5e2c1184862562b91806efa62f1b72a8ec43e70663de1f66a59687ae0cc1d9de1ce69244fccb0841b4b1de2e964e29408094a1ac0a9b4daa836e94454ebb942c6e9ac66f39abae73f61a99834292ada3c824bb53c8e67912a07377da92e63087f8d947f59d94a842b7aa8832b2c3c1aa957577f55027e76c106f86946f036804671b0e0416cf62e70eb8194d88030e2b38585181c4ab1fd8165a821bd68dc8fb3b403016ba5fd129bb9d23182029c4a292433087632816c009a237a608e65cbae17d688a326bd6c1ab4634576fdab2322b983f29c3e63b31303cc386bc90641c84965572c49a91f4e8258764834f38ca7f869cddbb10674d4296e5205ad805ac48462d3b31a9e6067fc0a27470aa593b896c3c319357b9bdf0632bf0786fadb0ac242609462a06f82460ea75762a678fcb07c350649d13c24c9e33200c9ca0e9bb87dd2c8578c7c4e27b1b75681a0b6aec6a55e767c4e14820f2ea609a16b862d5695556b0937f53e0ae370086c8f771295b1a09f0003a07bf512c4272f7241752a6603f8f51ea9a088e5263a59eb0b13b87a1d2929c2c29557681f180261f46c294de4aeaf380ca5f79efa2c64ed3131272ba489494ddbea14c69c46fd6346a7ec9f72d89559435e139a67bc3240bca29b3774127dd85d53c20bef719724612c462bc598c54738c87a00a9cb8c4b44e4e7ad4573afd9324fcab820cbf2091fd83fea52adc1b82b3f6c86369aa358498197631a20d40c790c2ddc66b0871c1ef882305bd978055bb934467d3ffc0359c2b31748cb19f615a63262fdf695f555be1ac432126b08e4a97acc18b8606ab6adc5cbe4589389e1121d737ba2b3a84d02bfbaa669f3a06b1be13fafd42a1773c830749cad35456e956c0ee64a5fcc46f1763c3b0c0d3de5c296a28f61194ae72979add8c7ce710d4ee846af81cba3e18d5e459addea9fb565b010e9ceed5798155227dcab155984635d7539d68c9f0d30537ce8b573b6bef1170540d0c10528737d6a5b219b2d96e5709a721b40536ee3c416fcec0bdba013b0fc0e786c9765d312692a80a5c9a3d65a6662788d194722d63b4bdcaa700e4c3daeb911e4d45674c3720be35269a21c0717a4c3aa2f3e1ab4f20a885cac44228138ebb70bb4548dedf8678d2163c339c1a9c719c2f1a51748571358c1451b0ced7b90109c98591126fbe57e1c913b5a935eff14450a22c4a108108b99b6efcc9bfd8438b5024677144885f1886ba068a6191ae17b9ffac1087bc94badf510095baa7167a7fe245a89a2a627d2631706a15d5aa081d037a4101b217c1c45fa0d83dc790447121cd9a533592cf8ac424de8770b45307f0aab484467c4acaa82a5669f7621e8ca42ec0b9222766b52775173b288ff5b01d70a60a853aa44917b8cd09a4b666138e91a3206c97877c96d690957b58553018f55f168c1c51bd9a48ae762a65dc73f366c79e77c42e793750924bcc1472cd5e552e20868a42047593842619c2e0fd40a3c7bba9557bb5c71185430a0158b9b95d04fefa266005141ffb4ba5160a5eee1499c09b11c549bc88cc501dc94a0a5828ee8a776a2a4aba3bafd410cc8354216cc3a93a457e9847af39b898b04b60a0c661a72a2df2b000000000000000000000000000000000000000000000000000000da8d41b69d2601355a1e57206c862dee967af0224b3c5ccbbbb89be1bf12fc688bac5e523fc2f73973b46b1727891a6077329e10e94acd027c9dfa38ef4e21e4
ciphertext: b0e578cabf9deab616e52934955f42eec74bde5ea98acb022c427e08232142dd08f9120eefe5f455c8f120e672cb68f3a146c3aa457b637d0901fe2b4cd45e8b208e06823b8aae09778cd00fff5bed5232d219a2c33645f2dc30593e591f697118a8472eadbce05c9fbbc5d4b717b880065173cc0854182555376dbbe39194e4204067358808c890e5fe96028921fca344e3500b615f2201a1c4e4d13dcc889cc9b1ac72429074c21a52f4c78ea2c467d65cd2c9ed682f21f31b27af4eb5cad33dd633185bf32e726fe6e57b03168803f693bd85f5a9f2c3ec6944e9ded2b8f3270a89139ce50ba6ded6bc6b0be8893f44aa5856acda60dc1c4c0834d45574ecb6183d6e59a183c0125ff45c718be2cf85b5ce6daae6e37336ea63856561f1bd4404df725d5ed9263038d1c623b2e1aeb35924b79de474407168834891af783fe5d83a631eb14d7cfa949d698ffa45e7d8c46ed4abf75cc666b78526c9b95ebb2920c77c56227eae6c893b57f9f463ff2ebc9acddb2f7ad543c5b2259047a4cc87ad05c08bbf02e8bb267bc490c4b67106fb598d42135c927fef3397f4c3f6838776787f23a9759dd3214075e79eb3929932becde84e82c257e4638a19e1e3312cfe09d4ac681d653d749c8fa6efa6dac35ad59399f1e233540fa354681ca55db90007039b7e504e2e4082aa3e4d672019741aa02a281454d4e1c73a1c7d0b5449c2e143ceaa3b18cb9a74a89f1ba74963dc5dd4155a356211277af3a267947700a2cfd84a605ab02d37bd6faa8a26b50f7b3d9bdc79913272c31dcc0f0183d05933a9f233504ddee2dd851529667ec5174a3d23bfca197538ebacda36bc29ca675384c0b3f45e4f67fb66d8dd4aa57b7da50ead391e6b663af173e7f4d46139f5d0f4cea84dd32e4e718967c6b93617271224f2fb3a1ca5febff5f26c4edc60e9acdd9e464ebb4571dced645814e1038a50515a7e06501adb2de19fec4119dec7548c41097964c3151226153ccac24abd1415579ba1c37c805a5827332d97ba90713829fb30b7b09b275d75bc10d4a26b33980a0ccd4b00844d9f379551bd0170ee895286526ea9625a72b6cb8decd9cf18e57262f8102a025025e8168465a65a7c7e4d5fc8742781acdc16171085d51dd5ec9f4f71f58cfaf4557a55d07e7c164ccf7eb427145c7f9a800e9bd9192ec0f74d19fc17d3881b1d55e8600aa55abf78fd1e226d9dd6e8da2bea15712f5f43325d4b9c083d6e37d35c043f2bc8c796ade072555263331bee7fffa54e2099135ea363575847abb770322376cbfd3f1b7980a1857c55fc82aa80bdcd701c7b7d66221f08492efb5438a04d041b485bcb61f6fd306e96cfe758d99ca1cee70b200eedee86145fe37ab7aafcfbb2df694361fe9923e754187c3277cc895c4a53732ee118c7b6156b55b30847a6e828b7069a5d4be623abff66ba87bff49294dd9b1f698ba445d610973d052a80691c9968e3179aa3eea5b0bccb3cf674c5cfe7d2c14d7b6daa7a4813abcd56ef930099
result: pass
shared_secret: 1cffb3d6d9dd9cf90d79fb2c5c974818c5bd6f32ea4d44c302337c4cbea44334
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 610c36a286cca4815c657bc2f28b854aa8602890bd6ec2700d64b495b50d049c5963b8294752942d11c1d0182ba6704e54c003b828bc58b6ca3ee0823607c3c00bd0471b4df571c51db3003e4cbe6166c0caeb747f79573f5b8b80d12ca78bc1d3e01a318bac91fc863198afb70cb9256a330faa06639caa7ffcc1248b367bb6b0bd905ab0098b79b85ac5dc083ed43ed8b248dbb72e5ad962b3201c92b132b2961d9867b48208896c11afdd929be2792839674b18e4c1e99a7df714ab7ecb58570281ca80a92f148bc492797564682b560f1bfa42b2f7734047cfd6375d3dc05846da1d3511cb3c8221d38226f29ca52b07471a41764f86ac3418a96aab70fc8454d6823f8b7c6211d216d08c67eec474a3cbad8f3587e22670ae5a9938651f3b48011341b6140ba393621accdc3f606b080579197c48967f1c8d11026d8f90b0697869ea49cb9db086ef687227b2549ac689b564326a2280d8384698185afb25941ba0365b0c1939148ed6e1bf0ef5c764832178d47a01c3573aa268e168b740194a9b36ac2580a7bbe1625900befef3adc6fcb356100ddeac4393d388fe647c3d623d1e6a56a96073bec59f5fa39581245e31aa33cfb865bbc28e9f2498bad34a5bc65c517bb8cae19b6d1864fd7a0c48aabc78d0373a84c168f33ff13a9586aa349a185e3528003e804c8cacbccf0073da46567f7c3ee6a55eba856851234b4f3725e1bb3609e50cd4c9c96ff947c4b048dd7c64b3498d23c234e9bc45230b8b0c797946d0980dfc7bbc5773620b8330262ab6247fca5684c9fb8c2e692c3f654099a7a93d0aae62d24eb594544a81431f295bbca7b15dab7bcf728e3dc61f6354a459a120c371030f3b622569a78762b1cb08248a455e0f0847e1531d194acb0507bb53e9c0e13c8b2f45ab06362be3d9bb58ab6d90825a15211f81f4987000cf74355a28ba08443b3fd9d26b70039955773f9f840207f696d0e7a4989c4b38cb23df626e53b7ccf7c1bd96bc3f68c20ba180a482799d2cf975e0a39d5fe863df954665509b3eb63c257b8c9e39050bc4a739468e716cc289a79053453a28906d003535536439d418736a95763ae222c8870b66f1b5a9978c29d238658a3e773063dab55125e851983706c3ec68d7fb1d595b55292885f758a8df752fd3d97a8dfc33a228c896a44bc039ce1a2069810b1304d44522b1a5e43756cb843b5ef515d89c310f442f585259e5d460dcd578cc51ab49e63a7cdc2566d77e6959a7d24150cf0b413d335efa65385ae13b482b9b4db4ad2518b71704098d7481d2233e2ab201dcb4a1b3604149710de3cb247f29ce8ccb2ec062b014708f397482dae5936bec37663c849c9baa9d3cc88146b88cf970e574694af03fb78205e205435221b32e5513989047e62775f1ba5aa89a10c9d35cb566328eaa5748e9c5057446f96cc691d80208940cfea984df8817d4507aff0a0a96b8c6729329775c8d75935d7624cc0a06ab7a950f2b73ce4d90239706403c0651dda56544ea59bb06a99f00bd698a8c3f127fb4a3759317a05ac244a07342f9a47257e5649dec2c7050188ea669a97c137f707f4e5b4c57945f82c1b0b2040476d73acb54724cba00e8014b4f4687bb6670b1c2a29ba577100943d5b926cb396423663f710328a8b536403530eee05006e7a7cd679ea44c29146494f1775cddd3b43ce6a903283f7890979ee98842d5a76f93777297abffccc0b8faace8f362c081aa435c32a5c31773bc046e61921f1a5707579fe36067588a0f32e2cbf91aa3ca6b38a0e12ffdf8685874869028775fcb7d7fd7a1e37c611316515638a510a13e950960e6f39395e436821165e734837ed575ad510d4fba6c3ad67e039b71a9b6c2a7ac240ccb3742d65b4b1c50a6a1a496995da77921ce33624fc48135e88c59caa47b299605ac1c79009dabb2062e375547ec907590b9bec52c86a6b9e394ba5f02401e4545c462c5f320939075b516c4a5dd0aa5d879456449a115125369584a609a83df8685ed2ab45f038559dc6b0ea170b09680e7e747cc7246b6c182d9199941847d9c1168a84400da2a98215a9e96f6bc869035a8822b27d459cb52147d966e0c354b70ecbe46daa9034074019acdac30055d8a1a02741ed8e602e2cb3185ea44c9e61fab637188554c8b12cc5abb9073b35108f59f6832112ff23b00acb0936594c00c0534a8c4c11cae4787092bf497b60b4a44116156e8368c0c950f3677f6424690803ee92373ed5c13d84c355bf041edcc872965816d6723b344244d0a54f8ecb0f1703ac251293503baac445996a1c9bd6ab851eb52f042692a2b10e4b9b44dc9625973af03fba67a3a93ff849dbea64739f643bfb803ea8653c2b9ab9639614000994bf48a8024c4e61c8a07a5c79b19540084bc7664ad44122e46ca1fbd517c8e68aeb3d835e53846848742a9fc2a4058047969bc11a773e623462c7bac66a34c62db861ef64dedf23c0b7441f6b75b4e60b86fe309b1b7746d558987f6a92cb8513792360ef76cb6548f0813ae8dbac418c25a1d95b06c530d79c6751e7569a2027f8a5354de3a70752764fabc632f3a1bf2473e8aa2a5cf815b3856a89afc122d98ba3f74185a3b2c09049601e23ee226329f024ac2692adccb2018b22a592a450b4a5819b2a498738d29f7145e534e527c859f05ad96cb963314c58a5a6b050ac6ead9adc4782859e3383170cabe4871cfc17a30ea4ac55cb998e77e1a26662a255f99f4ac7b98723341b2c7134adcdcab12a473bfe001127bcb01f84df31384af06171776263085bed1aa3374da7136648608b569a88663d2122e84b4b946b35c1f24a836e924202b7c7828c15507b17f906bc0e4b28c230134d90655696edde11a32c7a70303aaae3363e2a6947b4bccefe9ce62953f92521029959096a8910e71c51b69a0615ac790341c0ac3a574a79d34c11b4a974ffd7cccb05995d4089f8186b545b80a166982cb53123ef644e82897c77889ef91bd8c5a4ed1a4a414389d77307d53487940fa32782061e8458e0c601c884321d121b48ec04bca78c60d39b0c4bc9291945ae18224ec73ab7a451b9cb511bae34a20e326a497cb6ce46b5848c289da630f497ea3975eda79489f18a405e91bde288379f291f538c1a1426cf1634bc033098bbc9958f7af6e408354314e7221c37c1610bf904cf9e7807ad327f0f316761939674867ec7223f06a245711b0d47832b1a699badc8e1217798c0d0000000000000000000000000000000000000000000000000000007420233153145d018d37197db4a72facb39b5779cfde51a1ffe665b09f338119e42ed33e0da5856106580e02aacd0aa1546d3df0571d17452d22f186d011981a
ciphertext: 3159aa52482f4262cee553f9eb6d853d091a507831f5ed1af37b9c55f217eb1e87e8b0dfb653932c27e9e9f2c4d45cf89e9cfe9ba0d5175be56b7fe3751a4255649cfabdf0cbd5a8704d58511acf6e0580eed572561fab262b24d39c3a430a4e54fca969394037df12fd8cd71b7b6ec3d8f7345b05d4c16c5871b686690cee9804012a3379bbcf720f405c3c83f59aa391cefd8b00a73b41147d42c8b7820b0e779c44e032209067349fa4cd35e83850ae37ee73f96fc6bc5b71ff9b0462604b4e07be60cc76903175b045b908c9b8e7e94c6bc7c48ffd49698873913f9132025e51614317d27a874e319d802923804d1ce1626420d5794bbbe5e077cbd7fa3d958fb2d9608a3d41f605908d21fc7f942e3152337115a28b661f76405620b056692bfcc066f370449628f8e31b7453e5b7b10702f7c195dfb779fb3253f86acbaf4444ba9ce01c9b043133a233030247f8fc44d5b8c9b024ee83c186a62ba9fa5a3e45389217884a478f238d6a9b8eaf3d87b7b4b4375d4d5226dfb80255faab42380365b5511567978be9726d21178eced7294463a348b1e976d800b1114fb8230115b28e51f628a31aa8cf2e3253a7dccaa37f975fa2b8d32a6b6147033cfcbde33ab8857e3a6af95e4cd0db62fc020f55c2d6c9204a05835e2cf878c66502f572016d95b30c45c2ef6048471ad0cb7fe14250dddcb4014c392c22fb1dce1adc8e02f416d3e9b417f41c1b4065b975de472d0e9fd5b3a012ee9bf6311345b4968f6f18262bfc2a38d56d911f9efb981813f77a8a8d6af0618e015b8b005e7ea957f89f140192c7442a645ea7012b5ea2ba9f8cd2fea2ad3e41c6a57582237d53444fceaa933d61eac36d03a2865bfb7f12fd8cf451edb5050a35a75c95dd328296dc32daf61622ce0cc457c5968414b634b3e12a0ce45bbd733e3982c087a037d89cc86d546007bd92eef33949d19dbd4daa18e59c7ea3572bf3155a9a46af527347f4f4dcc2be3cc285d65f2f86c681a137850431ce8d2f76e295e74bd0b3c88f1b68885522dadb99fe1c8e40d938c9610e466770d62c34e9393241907d9cd7bfa470cb8fc149306d9450a7a1887d03cddad3fcdeda1ea54d3f126bb29a1ac3d7c5a60ead90d74ccbf1a75b4289a74a49e0a7c4006ab76a83915ebd4a95a471525444dd2c3e748b1bd347774e2cf01f90f05a1672c58f4f563e4da083e95e0fadd4ba57acebcb45611a3923da1d0d73f5c9a55489fb0097e123694e413460252892a0c6317dcb56efa834f7a51db4a413976afcb30ab4dafbe737f43da11c1b08a2472cdff3995dd7d23382b866873624fedee76823d37ec230dee2107258993d5b802fadeb89c9469a33c66c91567ea92581e0c2c1eaa2e2a4696b024c7c6009687d07769438a8b2ba75a7bfb32841dab8acfb8cbd4d1e26c5eb68bc49bb394b178e6f89dde843f4e2c5353b04390c245a0bddd1aeaefb87528b719fe42b35ad2a89ef34826d9e23f95b1bd3c3b24f785985e10dcaf0eb33f5f71f5cbe55
result: pass
shared_secret: fd9e333ac811ae8be12c052c65131e3a7a32ce82e39055012ea564e10acaa85e
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: cc389888219463a7a5f6c2ca3014accb3bc26f2318f593876de6a49822b6c1e694b7e5aa9140a0765b6334ec762c8bb018d28a99004081256159c836f4f800d0c9aa4a7136fcd89ba7cc1d6a32b23ed181b3fc118ecc60096a4ce8261ea2c0a6ca49baa28b75d1b40215367e6a33a1c177937bf43a70c3889f6aa239e20e499bc7a836694a0bc2912cc7cf211ba20c12d5ec312da2815ef20c8565712b22a927451271040cf4daa44d79705b97993584424e7b3224a5583e5b8eaf640e85015676517113f53a415220fde3638b9c0a38115e668545305ab298b9923bc16de5b9137b30a39a2c8b5fb75e4d1168593a8eb0e067bb9343f1a030e5228bf0b3a49169393cd14f73c2b8221b1267627d80b97d30544b02a4c7bf06099194b2d646596aa439d82a214e6cb9c5ea1ded727c8143755cf881415b6357661a90d5ae759475baa6076eb478a5826f86f9868afc47ac3a02a0e84579a25466a63d933b071213c886790c320416d9422d280745758779635ba6f848440b2489144866e8e018200cb8305b3060926d7e7213089a06d044176b053f3bfbcecac7840dd7844ec29eb17bb2caf321a5b17848c16a678552727a3d70c34f024164b3c4856b0a4ecbc78d345187c6e09f055273bb775078b43ecc534a40e66592b607b56b5f9304aeb048375ac71c30464e979a656f1728a7b700e3b33e5026bf40198b94455d2be37cd65867522b20bddb5ecb7a010191254b8a403f37c4577a613ea30678daab55508b16d6020f074504f928dddac1e8367faf6199715048c96a8fd6bb225715accdcb012cc856a76057b6b72b09a4aeff5b8ba278c54a750596e82bda45be19014e8ff52df181435ed9ac8c402147b539ffd984c291535b7bc8b26c5036352520730195fbaf40033fac450843e808b9ccbf03b40a9ed657f6ac4af8b65b4e389280633d79799e0226b28b356fc2e39f10a80452dc934caac7c3c521f0c5544e7821a403688f08378c3086d3ab8f7e4036ad516778da606204aed3ca1ae8c42e11038a64ec78a5fc5dcd0475429124b5d665e4acbeccca3a296a8e878b917b886ec7f029491c661bba684ac4229cd71373c829055b602db0518a481230345a34a709010a03e4b197273510a0a24465288c327c10c75434d9473208a7964db7792ea81c5fe0c4bd967c3f0c98765ba7d3faa4e6097f09e9bf10638fb900a764e4a0bdba2f19165bd69832681310a7a2585bf06322a3238dd26a4807af44faad999397d4aa14e76c2cad5326ce573d7ca04c03db769dd01a65583ecbbb991e7a31b59238f8741845f1adb5992607184dfa19a9e8840ed9e1622ab93031e2b448860d411a3d239277052cc8ea71046a0b1ada191a020c322d776c6655ae71964d86314a86a47b6a367b8ac5a4aec75677226de0c1864492c88fb70a53187cb76835d5477346646a9da97301156a3ffcc231f9a0da760dac142674e5cea882364dd74fab66901dbb7eaf037008c52073054cc2f94ec845444054058402515bd206d496bfa02c442c746ff3e662b899c34c40900902c4f8ca146458522c6a7af772b2df483f9d840fe07464b0c66fe1036c070c6f70278e9506342663b07529247b1697f6513e1ec8234bc145eba3446eec18b3826b2ae709792648e071a7c4627e4ac7716db5b1d6040ba7b8ac39b347ef721a99c879453846e1aa591b8495e19003df973580d4192cabb72ae2b1f498bae9b3cfffc8bbce09122cd1910a406574106810dc556894777f35316c992f3b902186dba411ca3462b927688c81f7269b7c2770de5aaf90c81f752a3ec77942729a68fcb38a62946c601c945249bf0e280b66764ba71a44134ba84df1400bebccc61456fdf3bf50aa85e8e60f491ac1c1317d831ba5db6601133883fda81115c67fe4691d9df01fd3732b336bbc3899cf067b9e3905294902ca5686480cc94eb4e98260408b4dd060cf4b5344380c89d564b31158ce098ce1e06b91446c4189c6a4d89aa7e81befa900b250a7060406e25725e09399963c5e3e04219d390e6c28983e335646485023312c4d5bcad9aa7ee683b935d71af1908703fa2c9d66c8b6c55049b3319d39c047b5824d04975a9034e8ca1a9e1a5b0bcb222c5b5c848818d14503c31270d4f8446d013d4ecbc250b72dc25934726b426afc85631ca1065ca6e957ba00f1176a6a45b68a5e93274423e642451129ce83b7de439963c0c4e5d8b25f3b74fc053151610b4263725fe51423e886bed19c534165b4cc90fbd67256839b9371290af9853c948251c768e157041ac91fe6649bd1b1855dc417624b8ca0d798b1947c720b3414db56f01500fba30207322ede05612bb6505818a9a68538c9eb98f2b0a83dd38b765891f0d01f1db768d2355fc6b7a47414527c92ba104637072a72a6c0ce74772664e68660c9c0c28347315b17273a6846a79904a04b90a60c5b15973630209d9460365529bb72524404b3d9cacc013b0a7355a7eb2172d317cd356a07e5a341bab7c33db5a48fca4b1600443df6bf441983cc05125f6aa94f114a8c3ccea3f9c498c1126c072f27e97555456114f6bb3244c4698c3f6091864274a16bd82aaf0711eb8c4fd86a11b35b3b8b0528cefc253d7906b6b05382e37428253ebda5b48b6a068354381b24348dec73c279010bd32e41431d139a021a398f0e5c7fc1a98863f069b9d42a96b029455670caa89e0b867781f73fb7549392124485cb032a008d63812f832cab899a8d5d24b403e76d17d6ccb56c729e15abb2e04e32928c9b8971be6a4c70b15bee620eef375489347df7c622d9a803a86c2a9ec5a7a0554ff763912bcb7f57eb8b8633cf6ef39556162eadf8c285b61a53f4837c8c9ef48c3a58b3b6c31b8227c98df0b9057d452df2c258da8a1de1b99449c0054c48a0bc61a2336323367077cee252d366661904b12ea6215b3ba55aab06f60a517704a4046312731325df563cbed805e2c7b2a5848fa1cb97e17a2f926664c2947a2fdb56ed1b3c5e084a680073669b2b9e888ee010410acba461910795958e7c0c98294865cc700315e86a5c54912dc2affc2469244912d8180eab244332a00b7536c4cab62345872dc31ca3c0d2078d07beda4431f278aeaf2482cde53afc56352a894dfe3948fc14956917a4dc836f54369eacd4af052b4aa6b60af5e86bc868be275abd1118a83e5acfdcd4c92a3c2e2b13cce7101a9d303339f0b2dd4a282499579b803ede0b26c75eb8af340000000000000000000000000000000000000000000000000000005781f74024912ac52aead1be2a87e042830737220659467bd06128a096343d5fc975767ff083234b2979bb109a24a27bca17d170abd8d9e6ad3c3ba19e306bce
ciphertext: 5ab063c95a541d1be3fa0744e0db7e0ece17b6b47cca0fa41d08e7969fe87de63f319f80b9a31ff01e203de6e518e62e6133edd108e5a3e08d3f8ae0556cfd36b399dc1ebf3b229bc5013d06d7550512280bad2b27657d3ca0679d9fc62f0bf875dd0b326008a89b4f29e97211ee7ec75108a9e4a320a34daed15fd7ad394a1747e4e35bbe4f1118703c330aea81bef3e3883fd41c3efc3423ab46b553c7587894ad64db57bb0fe4d289d54c8ba78d40683bdf6330ccecbacd3f7f41541f1f2b1a7626d3969df6586b4214c02f921451f6adc04f5e8de1e3beda82e4aebc5e06abb33f4cd8a3b3b5741617b6a385739133cf5b77dd5607a5c8721d5b51c6c0b6df551a5b440082093f49f31910a04e4226b9ae6f41383672e0694bc4075207034e39c40668aa3174cfc8a75fb1a474485e9aff01f3572a5c7e4914e7519344c8ce7b81377d8c2af66bebc558359601b21beb984c1f00564d46585b4bf02c958c6b348642be25119b12f34a6e5755588f649837ba53c0efaa4c6c95d109a4ce1f761c1dcecb84cce8376cb1c4e34ff932408ccd2d06f20c5397f6277bf9c3234b20cedd45afecb7e87793d85af15909546c6ee41987f36d85865c8c1e281e13d9575abb9a9f215c08d89420535f73643dc584707deb7d5275252e862393fb6493f9e126c651b7981f26af8daf978153fa4476d615183bf147629fe36de7cceaa670dab930ba8a684b0bee24b55961ea556123b34e29491704d2122e46bed0f6fd50601e13a5d46c907b915f3b8e695e0bbf474aab6e082d156e79e59572731b48338892f2268dcbb8fc21cfd537979278ceb210fe3efd052365fa249c97e8e596ae6225839e5b8b296770f3b42240b8727a0a730534d0f42f8c6ef148fc04e4285e1aecf060c3666fc17a1ff794f584b26b0b1c41f0fcca249935cd411a151932b09402016a99832850b3f56c4846145738f709f5e11e28a90d9137e4e43f03dd1ddb6565c67c2a138aca59e8aebcfa61984bc7ac13a60ddd2c1f0fa84fcf9264ad5049c888b9f555e024f0fa685474e083025da168e3b9c4ad91f074e7e711f84bb808604114e09d1ceb83b697cc0f045b5089b0bf7381ff2efc08e7316ddb7eb7be47a1d82cf533ea898e668f0da124d2e87fef2b558f877b50b13a08641c74e2726b19fa7c0f33ab213f403c328ea60d08c07155ca0c19bb75f7f6716de89e34c20f9d15ba8aebcb98e9b6461477f56f9c65ea7e8744a4d7306e216f806ea8f9f1dc45781c1adba44319031fb9e81c6d33bb317d959bc53a677270f13d96da19833965aea9a18172f6f975bc4d03036b1239e7c315ecacec35cc0f788be1220c0497844fe7c989fff5ef7fcdf89c261a0fed3915cbfae94b1fba22827daaaaa0f968f1ac71e9772aed587d607d5d3f57c1500b6e08760e0b971c1999d01553bf87f55fbad96ce61d0750d75180623543f40e5b0cee74bb429edbed1b4c2a3e1aab86c8dc7381afb0b9e7d4151a3f76b7dec4199b97304d7b3845788e19126e
result: pass
shared_secret: b4b4634ad37852e19175ccfb5eca50093291da8f76b86be7511379188bc20d92
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 078bc69561af0cc77acc291fcb063e1d7c82bdd7cc31d5b44d1aa746e261f2a592d4aa9165c2c3755aa457b886cdd55840767f4fa0b19e45410872cb1db3b8b5829c4ce9b2a8969330cb5bba2397119310fa072b7053b35fb135d04977b9ab4766c4c1ecd9695957473f10c679d71d2f6b57db2ab0726022bfeb10b61807d35447a141255bf5b3d0e3bbf5cc3ae74932d87268e172978d78b99daabcb16b44bd578f6dac130c2528fbc89ffa94b48e6785293023e2605a8533a5ac17c15f34b1e30501729a78d3b8ac6e4a329e1006e0c0735c737283856d7cc7663cdaa1610b1045b7423ca8ccb59ca6b1c482dc02ba117c17588809ef8506f09a7162720142e397c6ac0f8fdb02e4c1c557050af941ae8165ae01d9228f767ef1ac3d72f27cf9a2282a6c379a669d01cc0a6c560b21169557b88771008dad62641f435e0780234e86c1ead05f14c0ad68b6b1041492a166bc4a278b0d352129556d55f37ef8969b596c5e41f8597878c8c6c83de675019c022314215eac667a7b559146478a4a5634ff193f6b83673072643efa59c27650fec168ff17109577083bfa8493f38301528f27681405693345e523ea4398055606d4ccad9df967fe59428ca7502f046506756a6b9a78182383db4baf05014fbb20afaf148456126fa393abfc480edc92465d93aaa158c2a8493882b24c564b607cccb2c8f6cbb43abd722c74c2c63230946acc091c48b865cdb33edb712c670648b07c06691687685218ba48648fa3054ae7a6a663aca6aa4e66506516100c8f2caf9c0645f2554c10c480e798b9c96756e42cc8a7f626c2759d21555342548e0490420df3a8124b0566b1804933b68225359cf66caa599c55573b70d488d16185496216cc09090de382d570795efa569aa5bfa8f4a60665cd30d63bb36cc5ac050310ba9bbe4b3af2f9400296bd344cb72bb623c757366ef1369c968578eba52a092dfef34aadf552a63b1495a5b78168cf6e58b218a3ae64310d16734d5e72b2036bcc001ca07533085548809bf114a092225aec9cce6950a953773ee37ad3467bd5ea0b4cc4c6b0695a774781ce17004cd48e36116776db19565367c92a94488ccbf4ca3c3960524d1b13d6f77399ac625de5a2d09954cf867011f79bb4c3682cd40f133a9d67778a24d7cf1a5b71b7b81dfe335d0fc392a8b12b234950ab79cac94776ad1b713e99b0f394aedce739a15334f19042f4861e739c839ce07da145808260b159625b5a742258779440953c743c591659b9d982aa7da028c7eac4390b47b243ba23e8ae4fd9c98042a0c2d25a6688c9ec774cd7e95899fb7f081035b0c4217c2903688ca7e4466e66ac4e3ca938fd58b4d6bb732a36aa8e097fd75976d1200d61a5c988c12702698b1cfcbd93157d3d1c6e76d316b00b4e462588bbf3c480d8374df3cf66a16f9dd2ab721954e02a9f8eea4380c381da230f10c2c7dec02b057177e157cbd5304ab1d8160a323fd5892fe1649c2e270dbd3777035912dc0802f4d18a56356b52946f30c516838028f7f39cc22466ed277a5adb6864972e1063b1af0709dfd60136b16a3d6c863a68895677c488eb1d879a69a5341a695212066ab848609cbe3317b0abba905c1559715f25f720b7b745a52332355154e60577e598c754b6346b335b0195ac305268bae78bb4617807ca4666738ca81515bb041d43a4188003c52ac4ae4b3808d8c755d3e99d00537249d39d4cc02ed9f98ed4106895666c47538f79e30f5104adab1540a1fc58d1a857a1a4611257be37e0327491aa4b543aa6322ef7816a5c9a55eb3bc8604b15540b62c3405b861a84218211c20bc3d35a8a506b0153306fa98b9488a7841d85197c170f84c380098077e42cafdf1913df369f37f3291ec47289710c57f152b74572c23324f83618fd281f5e41976e77097a570a991b3bc623ad6331a1bb34673b1c328319758ed731ca2981b50a5a2cf8c66d31b10e88c95ffc27c3b6aabe8b207e6cb4373464b1b83f4a5a9806449bf7fb622360bf9f098b56729c5738191d57492b377ca8f989a87922a7368d724b07b7e36133620fa0735d60f5be8b51c19ed1655de5108681cb27273d511c643b7867516c2982a74f62e4cb759bb1f5f0808cc90e1baab60365722293bb07841803076504d00e6fbaae853749fc322e3458810ea41d832b35bf05a10e62a4ff8317b506b9af7216c445663c9061cc62914b0b72b5989d7d9c2b761c2fc5a28b5839bee5596c0de25c10a15776447e17770edb666249a2310962152059c5ed5738741a29e899072427891fb53606ab8b5dd06c005d239adb7bc368b10b74508c45c4aca726fe59c7729cc1ad617236e1b75c760e47815df33297c084429ca371c16c5761c9a23ebbcc2cb43ae9734ba9495d5a86a89e75aef50b9e73470d8d9974cf27a961c0cb2c180ff36140818b005f05afaabc86d8b8bf5c2a62f0632ebeca0c9c567514c9311ba6216fb13f1603c77656cced520d977ac75031044c8790d1b4c97dd38b2aa43dd8808a79e406f8e01503db8f7b51cc1e4265ee830461f41cec398251ea60d2c573ec59b4d28b09dc9446bb972f6d134e2e192e987153b39538e1f631bd81b2e65c2c5c68a96d1b78360889efa4c692b7cc374160e8dc485f47a676d77706e047d3e717386bb49cd942e4c05374b3a1cca148535a3ff1085102f4a7077b5f9c7b1a9ed651edb32691037f9388b672a662bc247beed215d51b414d3530c6b0631999663fd7c0e5da7e411c32c506476fd08a09d499ba3c27bbf6a804cc7e8be5c1f3f97d7aac085dbb3bd1076a69db89bc990efe59b00ca943ef8560642176e926af342b48e8002f6d1aa99b58cd013b03e0d285455786b54a4be3c581419730081361c04697b1b2c07df068621213c8ca6554b5982d5a1aaa113ed9343a56101aec68b838a37ef2c8a15d0504c672b278556b40c766c2066ac995caa32676da182545773881545cd58b71d3d7a02a209bc7407f420a830513b9d9d6c93c56571e42c8bf154afa060667a46d13cc542429c9d1a35be012cd3c9abc2bb7484fc89a4a83a20f7c2bb088793dab732ff370cbab614aa851fb77ce176b8f806c4f2e6068235b93d08c39e96badb37a457e8a790b2b8ef00b0b9e941592373fd2caa3ec3477c6c440d0daa755ac0ad2285754ac64b0852086112b0c9794f1657916fc173209a40425afc9b19946c529ca95154f24ca3cda5f9547c429836c377123c6ec0000000000000000000000000000000000000000000000000000006f8e54b993cf2cd10ba4e61693d9aad8943af37178908ab532712df5dec4b908d48790195fff2c19f221b7cd8637576cec18c29a4a51cd07c82eed4974c36e8c
ciphertext: 925fde875ae198cfea88c4eeb3a0091897e25a793672df1de3f24ab4fd3edb2cad0b07e698f35dc97bfd1d551fcace3282c8c3d8131857d96ee9986da7b79a02ddc6cfc9fb7f2b809a8e5511b1c1256dbab33e7606d8a5fc048b36f6ee53c7f556efadf94494595a549ca260ac9c45bf9962bf406610ca58dc286a9eeccc447a767b6db3ab009f5848558acea4503de747d72d43218babd6f68c091b4581f4e41f2e850047f5f543a02407e7331202b0eac7bed180061bb53f4dd3504ccbd3f298d96b43bbaf8f0c2545be54c59830e1f343ca88bb9c6812c66bfbb59a6d68298985767a73d34fa69b52cea98d95d8305f97c4d4fd643b56c60fe31e3c2ee7e938ac2e4a5da2297e670931c1dea5fcbe9cf118c62a76a461495f10f640fb416ff7bc2478c0e8a1356bb840345f3d43476bc4cd990eb7f7cde7ccb96452d055397ee402be2ce395a29a4f4061ec3d85b99f086341441022435b636028a1a04c5d787abe1c24a5a55653b7063b1cacdaee40ae0de77b4034b9ac0e860a90c8834b352c71e353c02b1f46b135fa68fa7a5c1c719896987d79f3174b8d0b0c28ed64cf9f2907924497e35bf519d519a9199a4dd68025992c6f466604bb2ec3d7b13eba76e4803fb73bb125b83413998ae86691a0b35c0054e1418898f435ab26cc12a12fd4dcfa9e80887af7ebb6c856a7fc010cfcaef9e1c5a4dc24a91a622fb7307521faff0b8e8e966b7b6ae849ccc75d31c8d700a3b6a9c3f646b2a88d1e9391c2ddc6c9ff15db961874c87dd94bf0165cfc8f719806539a8beb8e28350610461b1252872f0f3ac273b3366abd78d9fe8868dca1a5eecb683ab8b50ced8cf4a5ed3b721e0fe6b205fb191985ca745ff5dae0010493f8296b6586e1c96f7f23fcb4ac4dda15eab811107c977aa0a16439b06986a9027640cf7a01051934dfc758215d22c6f06866d5b871dfdb6ed240a73dfde43f7f89c0ce6909b54b0a633a25f7253c10906166f81ae91a1419028d6182c1f277dc7872b824c7a5a22bc7afc02afeaa9ba4c271ee68882397e6cec34a955cfc672f4e6f5ed870a35ebce97f34542cf0a162938c91922230ee3fe9ed9a166a790ccf450b80cb5f483c3c6ae5b2e52e907824b45e69e5ab38226cbd6519de995e1a62a910fd45ed189540e0b4058ff01edbc6ba4eebd58d55c0e33702de299eb53d6518254b8471f282779533eaaef90602e52373be8b519c56a2f6fac0953c0f84135715c5674e45d15804fb94d9e0525ab493aa625fbf73ebdf74f0a1246e1eb0e4e2e261b24ab81d8da6e1770634c747542450cf0a2af23507f8b6766a16dbb2e67b2c94859228b91eec6c59f5a271902b340320412ae947398ad102073f8b9b8c021f81f786622c3483e61f812aa76232e6f9453eae044c5e918e6e4e0e18a78efaf6cb36f7b75929d0036c44edf928d6efe1ddc87b96288c7c624655d302b98865978ed7bc779c800e6113a0484dd225aef29796c8ba300b3f48dd566fd877dfeb5d25f96da5d07e643c5d
result: pass
shared_secret: d4b9a0f77a52d4f8b9c95951257348d1931725c27eede694ecc09204a931daf7
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: cc4a14e75a6b1bf87f11a240424645dee23657db9819ac274780c2d7d8ac64f2cb82530b40a078791a2ae70aba868253bdc3045b6254c4e29024894cd13723edc7461a37403609b48f79b8e8b1018981bca9f68031dcaf87528a6b065d8cb83c142ba20d68a728a3866ca88e6836cab209ab49bb234312916e432fa51152c763a62cc53da61480691b07a073be74aa6c2b88468bca8302a23d1d6405ddf4aec2f88ab055b18e2b1873862af6539ca83b1c270b6a563cbc7a220cdc8106e6e5595d63a26c0cb86ff11b48066721634b43b361b57a5b4ddb2967d232d34cb750026b362cbd20188260c6a856e9493ae09c462bc4c8663c7903112488b06b2a996dc6668e382e9cdc93e52a1a368b07d8388c9531afff0cc4c07ab423bac717dcc888e213e3a75d69a633f49745bab10f62592f59d53ef19b6a62f0b24216aaed9c91203b7ee65b9d097cc1e2676deeeb576ceb4fa4a867ab7310076a912a41292c658e8f75a98603612558352a5b7beb404fd2bb6de18c7ac838464b6399182536509624e1e25a7821b71edc57c35541cd115ec52c13a739c3de231ada741274272383cc78bc9869d37282f5980209543c92b76ddf99c3d45cb7409b5e44599b75412d8bd122460905c250a94dd4052c0b0a91c9a906aa3652180fba9212046b4f7ad14f7c304780d553f19487b8b7413de732ba1296b41a2d94983d4be93e540a4a4137a030629e97fa640c21ba5b7b5537a03a2a958ec3a888590a5c14a904dd74c83631264644cc6689a245f833530124f7d10e2596a8be227f270941faa75300bd731c145f781cce52247418595ef67c94a170676cda269e51c7ddbc63b6765b010aa061cc576696c84345c35c491d3e4626efc8b73dfcb481c11bbf8c79c6a3aa4e54c43a44141f5c35932486320567ce37adaf5241bfd8c44ec140d30823b58223b02742f3e2bf5864756d528ea36348c1c2293d8ca050b6307d71a20a036e0060697b58a0ada53eee5a6990a9cfe283436cd36a02dcb1a2b7200a267c3f133ea6423bc001baeca953515214e2766f066cae531212dd3551e22bbb1c705f21753ab60a70f364bf1949901d9a0415a36567614c1aba2dacf2c5435b4ee66193c5e461596719790aa792d5a09ac474343509ee36ca048751bd4b0c644b2b039b1320b2294df814b419c3ac55541be5cf4b93593aa4c099142de9e13699a40709d70070aba9227b6c14f216d434c9bc16112b8b4237f838340a5c317a618a91170709bae6a7c13cf96851f72a8761736c452df27758afa4b02fd55b3493b1bbf96dfc45ac743718978b7de8a017eca45dea633dbc417f856781c856c87516429127c6a3d335f162ace0982235ac79ba0ba68edbc1eafb9ed7a3597ca7a612a9bf3ef2b0d1d7c238e98714a434b8b08b35e3885e007501f9bc06e841921521d47999db3ac3937468a54b95b57a2bbe34aeb48ba57f0744021bc684456a8ed413b9192057eb77a5502dbc89c5964c0383b4c9034396da209279199ab5830abe9386b2e811c222a6ccb0cb23732a95676fd5c0376505943ef8bd67a95defe0af7cac395a743bdc3119b1a74771343bad21c53ec80cafd7548ae310293027d62960038c5d80656805b427d0b9167abb3697444af88a0f3eb48bf658be44f36b01233902291860215084ec7bb3e170e517c65c623ecf4a488f69923f9045ea18334d5c8ee847381b5a8903a6233796b1def36e46d343cd3547f4a757d82c262278432bd555fb5430e7f936affb453ac1a031c70cb1b3a8f3762dbe226461501d13d10052fb621be30b8ce63ce93591979863816397f0d198a6c534b55213d778ae7bb1a20ef1809ec37b08382c43e82b4a758458d7758d23a350538b3e524d27c9074d1cc4e3e1a17a6b06fd71178c5b18803b1c439b9e903a0d63018d2f765fa7426a0684793ea789c30435657b9aed58886cb8788e14426ea0295da18293024eb1a39eb99a20619a3e2db48a93eb90dbf42b84fbcec1f0b9571946b6f150ef5a672686a30e52be2d536bf3664550f60c99a89b81f3c911784d8a371ebea0b97ff50e2af68f822a72e9a76cf473bcc1cb81fe2a03051771b1c91f1e1a444ab6119c0a83b25a434fd598bc767315881aef9cb4d4c51ceadbb3b1a1142e0b87d5826b161233ce253d2adc9a00bd00e3cc21fff09abd919b54e09ba6b505601a358e50593dfa117eb2b8d7458745a25e7c7321cda0c432aa5bb41aab60eb3dc7e03ce4017b245809a534c3dfa49e97f4474689901e814a97fc0892ca04d0c00e3dfc836b36bbf74256e77525a031160fb3bf8ac31502c049d0a264140104c7488e36a46d23a76f4535b5902677cb98a5abec57b9357b0cb3b36b68349b273a2f8396e6c8594b4a32f0aa8a622378b3ca0426f44443942c02162907b2651ac2168fd1279b040192716bb584211df4ba36cb363b8c3adc39b410977ae3cac26c21470426837a43b821f65d8ee1950c87b4765a034aba1a35579f4148b8c2f39949812cf9d850d5e25be7713ce62ba31366737c03ad45f23e9b226d1835c5ab01c081063dc193630d72821cfa2a56d16108c40ffc483177d075b6a7a1bbf5cac7da0834d755acd10b9b9850a7c97d90a1061ce94efa4b0c0707339dbc7f160a45eeec022815a4494334254c08ade388c07c34e3a07e51ea60fdeb9b20b4b9afdc6c3c2b63e872aac9b2a90b798bc2dc8d585c69c1b33c1d51372c583e835b9ed561c218a2968c044051f8a969a7b2db6a7031d20cc9e024bbaab4385a3ae13ca264c25f6c5b4170b5c0da13044664a10f335ae9045bd6319abe139bb2b8b635bb06e2f48427e256a16a0f71f119230a9acfb19f0fe07c71828063f42a844a5c703aab9a844f689944ead511d8c97127d99429fc87ede190e0fa002261494076b7a10496dbe12919f585685733ae780eab3ac168287aae3842cfb637a94483f68170f6a3092d51b82ef10496a6374572a527aa7a7d1a99315953f625842ec0bc8851180b98cbe411453027c9b8a4a07fc3bbe32b897fc09e5e65a0457556a8b28e5b7c8b28db24e5431893953c912c195ca52db5d125c3f595f2ea75a63b6c83c8cbca257824ac60ce16bb5be02b30488974a22a66d37b19531e3cf17b59bb43d738cea25326dbd6355243ceff3caae98446927351ff623260472f8c7a715016ca5480af5cecc001c6b65f41221b16bfa61863e225709775b5e6393e4b71920c0c539c6bc5ec5c609466000000000000000000000000000000000000000000000000000000313af29c47d66acaecdafe1b91b95ddce43b0cd52be1d1a84428587728f01522a9e4a0d3487b6714e18bcc9d1daeb3127164328a19d5cf60822f3fd37a24bbed
ciphertext: 7c06bbeca8b58423e2ad420ec36064ed42c881e3655668f8865a2d643ecd1a4eecf915b6c64b37c98947f06c3ccc8e00bbd16017c246db88cc83f12c887aaad7db61b4d567c285841689169c3f928f1d178a0ddae50d8c46cfd95258667d6239c300595738defd2e806637ca46baa4c6c7b97f1a9b47d53cba9ffe074f88d104c4971d250d085b1800fcbd91584d8cc48e145fc81438290d74765e7ee8c1605e8048b37b9d22b050791fe008b9b84b7f23b0f49955e32c0eef78d7a3a0b2effe8b37d124e19d4cb6f6914204598a525239d9baa116e1c9c39c47f9f37f965941b2aef8519782c65f3ad3a6509d1e31e7efb67db21911e4edeb1f7e9c37b3f852c81d63a95e4775e3f2a8ff315a214680adf44d290e42ebab8ca95bf471140b9d7e03f5e9f97864289a0ae8c9a105e00409f714e413b69be366303b4a138ed51264ab0e5cca5f6dc9387c6608109e8859893efa3bc7384e9f418468b1078807dadb768e254094039d1b807d67353c8e0b5a03d28b8e41ffa0eb3ce0837a132144597908f7a059a097b79a1bac323757324e907b445d064e25c378d2069e7c5d671036871e4fe36705747635e40c6e835319e3ff81714cacc44515d671b703c5581dc76afca0b881f37c1ffc93f2e4afab1e8ac776ca883f3adf7f9ab99396f7e19541c26342a7d5618958523b81871326c357ad84ccc6d3574d97cbd875524e7b08a102263d80f318a48e510c22126568f76936c904c231700ad042d73137eec741c827a082de4a45d296745c55b8367719dd08b8295e38d8d3894b9f8e2f9b483b266e1fc71d6374353ca7d9ed1c6b73ab5a42f6abff7b2ba8fd484d1ae6928b5ea92ea3577be01dc1e88abcd0886eb771dca4d36e91c45bca4807c89736b7d6a927cf64b22c5f323077f5488f6044976f310b4b99f7d486335dcca60571157ac0e480a4dba79a826b4bac3dcb7327a33b16381eb41e1d39915e91a58750ceb71098ec7f1a2d7e44d4bab75bb7482eec277df206502c497eaa345109a145a4da6bed1900b680ad12fb028d33563bfb204ecf66e6ead587c5fe27f8a2eb0e27471925ea0f35eb9d5e53ef801eba3acaaa7790b105eb6128ace992668181c1d7cf203afdccdfefbac67dbd97cad05d499239df84e4cf7372117932c973957e5c70a8520f822be430758990296877df62069d818768513d14df0568be8e63e123bdde35036dcc69a98197f52dfbaae5e5e0cee4a48c67fdda605dad8a27651625c2b35e81dfcacd2a41a6d17f6d7067a67faf2479b3868673b248270f4a2d8ee26de9c787ce966ecf186c1401ad9d3bbf2c43b1d5de32bdd77f5433f4325427254a13985d733ab0863e62a4f3d484ab3f5d3b88f23049079143b058babffc8367cebdd9d2468d7af782979a3ef12841370da6ef2db03679e6bca0db72166c361adfbfc02234119abaf98d4fea8ddc6e8490c2fb5a1be4806a61bc7b36884cf4631cfd53138a23fdda11e597aed323748314282672473a1819ef2b9488f6744544ad
result: pass
shared_secret: c9d0cf3edb1172344364afec3615ba98477ce9316f92ca46ca5f42b73553a9f5
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: cca22002e0b84e0c0fa98c902c2a30f0d9303a411db91a26576834d4f1645c181bba750c42ab6bcf401739f83fe2a4a3aa1a3f5917418003aed863875fc044dbc99c70b27758389fdd3cce51d5a13b21afe1219f0bab5dc3b15952591e6f80068b30870ed644de082476e7b32d3a531ff8631914c7a5c106a5acbf8672ab4a304afb71b1672cb281438f0fdb1db0f52948e8b0a1422ba10ac5e0a480e87bb844072e7a134dcce36f27274775fc6a8bc611b2a33cf85a4820e18b47b24188030fcaaba998d84a68424c07f4503abb553ec33b4be2af3557aae2797649da014dd0264d00ce74431e46f8969276b24b359c6750c5bc15a6318c2d06898ec5f473380a68302a91eb562fe4f10596012e5efa83f4c55a19912978a6583e4a884e36af1b9367e69ab0566c3cd8c34eaea615f49c094bcbc63d52a21d74c02462cb0bb7c77cbaa03df988b60cba880771a7c179315a9f6ebc6e9b8c90bbf17f737508b1691ef1952363e9499b5007a9c84838c2a149478e4be76c0368a8220b9a3ac68ef6560dba6b3f68257b6719551d83c38f73654fb392af0c1c2517851fc160c343cf826aca2c5614726c774c758e1abaa9ac04ae0742799060970909cbc2f78ca739c71bf6528f0695ea6175a4ac13555c3bcb9920bca3a37d363ba622666e54a4e779cad5059612792d610257a689975fd664dc5081d5ac4586c60e99b9a2a17ac612e5a794ca4dc097a71f72bce02b4907d69d801a22fd7b88f9e4ab284076037a0f6ac803bd7b243b835e51873919d3b77de041bbdb9c2917338f0c42a54ba6f5539d60e827387a9e7c156155d693b85701b53278139b29858785cb59788ed981d77556d27390285bc3f9408cbdc717895815d31641d0c31f2d911515f36743c40f4f3517432c620892149b518fecc80cd2d14c99730e0c940dec155930dcb5ef861b7c80b55c2223f7066b625c9fe5f0cb04f0bcb880119de142ce511affc01d483ac8db8b73e504b242315533d9c02cb64d15445fe32bb0c8e19383f82854981a9ea465b05c77cfd66d97a2b262bb37398cb4654a0fc8146c00b7608f061a216b9becec17f686b93d88309a7ac04c2447030b41ebc6a95fc52466d36dfd461bb046172f3b83fd10bf79c281202a60aed8467748a986100b97742c8d70c8de523c1d700489c391096c1b92654064cb7e35d7b25f29818ff39fa523c88bd69b8cf41689a414288c492f2a83f7b34a4d95770e6144b7731057c73a077a471e7b378fa48464c426ce5a6566e7c862131ebd5a1b3df013641a878fd702d167ae3f369361666514d98f325679c22aaddb56406e148e744960ee1395866acbe095542a6836571959a80238d037260fa053a52cbbc2cbc035e78fa9c306ebcb61ce33422584009271835ac3845524794f18bd7e1b4c034832fe68ba24a162815404f65c0af0944c9789b1d92767268c801a0444fff50399b3a192131e965523bbc2c75c286c96450c3f0733458bad7831205b1b4841a617626b4bee232cd1f220edf53b59bc213a055d956591fc3518a1974582f79a66dc8892ba71ccf7a5fae1c01841428525c32dd2b433445118559cb5447e3c851a0cb498cf99c2d359999fa3967dd722a23522b0d8cb522a67d63a75af305c05f3659bc496f1c47e410582a0e58bbba80751bb2f5ab71414051627f46a78f9708e3139f8950b999378df4709a08b9b511982ab1b2cc4d51d177578ef263c8e12752f914733023d9e8068d4fc1aac34106fa72197f6b4e4bb26ab29ab64d7c848f98ef5557ec2b35edea70b67c084193921d8cb52e132a24372be7046aa2af66696007e2e0830df1c7b4396bcc8f27aca46932c463b49db0ed88882f3a45901a4b96ee3b74e78afb8dbae7bc653be895179f208c27c6ecd60c26e54152aecbc13bb5ece39840574c56fb39fd2385c76d62c59a41b3311702d5a99e366467b6c4f6c252a95db32e5096e61d1ba872924d358b346dc099a485c3df72a94e437a82a6cd778888995c473c203e091309ba42511950c19db3acbc5987259bea952b5a549839f197d7bf64ca0772cc1dc89572a0e04690fe651a79ffb3dc07388c30c06711c6b25572bbc83ba868a379d54c6439754bcd67c9b0364ab3790967a062948084ab33a80ac5971fa99830aa7d1e9263e7087af67ab6a83ab34f405dbd72b3fe46e9f2114e26cc6643b6d3adb9de63090394213e72b64ecbb2242266139579ea9cab2e51868ef82ababaac38e7ca0b9554d665365dd8b0b58f3020cc9218b866955f54d9f7b9af9634ab995a0b5e234fcc78cd1594e1cb8a845ca0cdbc82e3fbb35414c53423b76875ab267a702d51710149061e7655a0168695053aa61b990fa9439883640e7600345033ca90678925b1d632962deaa0ef5642b870610be3387eda90cf608254dc2b000c06632331680e12e9b277597d07633a31f6445318ac7b9cc1b087cb58bddd30a07ea6e1b1429950b7e7efb1a6b88b037c92cf987c904268ce39cba4bd3c163f5a8bdb9698488152a18b02bc98a83fb6c28a55a018b48979660ad5b42281b8745a4bdcb02cabd16735ab1523916adcb031e34ccbf4c50bf61bb7d562804d4104d3f6ac183f447e6608acb0bc40a34ada4897e9a91c542571877931864b612cec01c88010cbe039d42540835422f5900c944c7025ba3365543536d093a68c27abe1175bc227faa590f8fb8ca9ab1a87366574422379fd8659fe5bb5ec76e179666adebcedc7b54f1aa9388b2907a4ba5c48441ad90499c64a57768631d4a961d88976c816adb897da7715a100c75099cc122f3b1df183385673a3bbc98cbb0ccb0b090b3517993815e3f6b26b984bdda32c11947b2fa5411004c2c41f2a646036b86bba618e72be7f97ec6369af5ca2ab2dc9493d9078a0c8598841385205177c80a3be42a31d1166b02cd1dd2871148033c794242962e8645ae2e4867a3e5c74f71a1d978379ad45f7fa5c70066cbfc4cbfbe05cf23612b2dea551cc52dd90a8468ec771ff071371544e96400e288a82e9c9eefe807d6f4903ac567741abeaec9707533b38dd8c4366bb33cf86f77272478e43a2d8061293332c8d805a4516238d5ad1934a9683655674aa6b6d91610d4c82e966d74c41dfe7ac18e993c22d59b2d286a0b5272cd44988510b9b342405757a25731729e934c58c601f5c311a244a24dbcc772088a20dac4c8410167304fda18445f6c6126b9645d4042d6033419d246968848e1f5000000000000000000000000000000000000000000000000000000ed43f6cfc5464d2f56a817a3dc74b5ab404164947d8c0792f6bc9bc00bb4d20253f53a49ff45b0ae588d417a63a599670cd391c5e9885c972593d09350bd7523
ciphertext: 83ea5ed982570cd981b7430de924469d4e2faba68e03261a74f5114ab8c448376cfcd1b9cb3e72bb031bf0fefe772bc40888abc6acffc1d335d46d267acde2cb89cf1b3c67a139796d6a5763805d5edcebb81070b44ffe021b6c2b3c6c3d5dfb6d9e546930223ab0139990c6c5d6257520fe394a3aa30c6a71d47f415ac86b68eb8c83b131a3c5cbf051971fef5ef3bda355d3868e71ed8a0e2c6de8a759bc0c9e760277cc2c04c783d29d1ad3d3385accb85cc88c39bc8348f84dd8c714c5feda50b0770414a333136d6678be6ccbc5df488bafdcade883fbb310c99cc648493aed72680fe1e43c0cf523d3dd06417d29dd97c98ce53089505d36a476c0ae6d89b165c3ff6b2c62ba954fb81ac5782ae648a6802bc057c64fabd3726559ba79de9c144aaa525f6a840ed55abf21b37231c6c4cbb0110fdbcd0004f6f4974ec644c33a8aea34ef4a0a146f7502650c3def5a313d2f309cb428880502d3bdf39196a99bee296f9231d87972efd1159d3cf59bea05f0d0373a0e218ee5e0528e1ac7132440980d1153b9423bb2e099d05fbc8241ec1f316bf0add575a69982f546e99c64457c12ac83951ad46a5f024f6a61c91b7d3853ba1fa41d5a95f6ca811610ba3f32addf011ea4091ef217cdd126ec5e45cc40ec6f1292602b16c02718419646370e5b2c7c55c1128fc5d6c767cc75248b79e2379d40f91a8617e8a3db43c42cabb5cd39a7a7969147f30344c4b03de7034b12d8a1c3639697c97c4483e4191ca0fa81d8659f40e31b899b4ef4610644b1314ab2ef14b8dd8dc0082826fe65dc17211572cb14fa376f1b1784a00033c8dcddc44d6a1128a200eea668b6516ba42585cbb2e2be2a42148120013d0a9378ed7c185071fa8fdc09102164c63a665fd09c08d34104c9abb64e394b2e2a00dd834f7c7f5de16f6c02906ae37acc923dd76e530c78f2143396bfc371d14e6c48bec072b6b4e18eeae967456beb3f897a06eae17de174cf09be1435e691350632c0b1eac69dd66549c1d980fb147fa295ca6f21b5dc398e63a7c4263c75b55c85b4f38fbd7cc0fad84aba90dda1f2c9ca88d88905602096162486dba1ed0a8caa6b897c99e25934152a35fd0d476de09fb211abf36565af3744f3fb737247f5d8f172fbf438ed04422a6b3e17bdfe2cb0f09a1d57f1f1a113a768697f23d61ab288f15abc760feb0f5c5d4d5c0b1c891d3dad6089a3b7e54516b8f9755d38430312cf17b21efeeecbfd2719b62480225b9b3ee8940b1f1784ed5630d152635a1233acdd16e5489a9a15eafa7bec99aff25b18d9cac1e726c9e424773a7083f213cea53dcd310b0037aecbde1d584657f32cf548a6872c6f5a1a3a70d4db29ee3773291c94b00b5a596e1691f7752e246ca0960561cd233ec7d5f54496d34ba65b359a856315f02d16c990cdf3db2051b17bf283fed1b808ac79a9ce8250c806896bf75f2cfe76465c09360aba4c9688acea341fe755363abe41c0cba3ebad00c6c7bcc3f7ce091f87079f60094b92
result: pass
shared_secret: 4bb6a6b27596869efae3d411c69c593afff99b1a703ee1f4ff3e0e7e9756e75b
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
private_key: 16997ff80976d1506b23c012e387ac6ca0a792f7481ac3c9775317ee3ca5267bc7180ca884d28bad6b5a05b045f33a9b975c6c98908d670550b874ca70a77424e48bf097256434b9d9b96c8b8149f02ba5bde9b813eb2b60f20da4440b4cfb05716bbfd86255a1e82941d2816caa7253e7368a4bbf4bf546f40b1bafc65bb994c34f7337e82818021797a431cfc664699bc22b92561fe3d1cd6306b89a36380920abbb466477549d1bf14364221c10f51fc3f7240de4c99b3bb3eeb9ac1fe12bb7c97888e8386da4a341a0be8f78a7b7c49f2184376c3c3784289a6bd9b6a03a110c228f72939b86c7a87dab3e093c0ade693a0e5331c48b761b070476f55cc45ba1dda14dfde01a011776143a4d29d48b47b0c6cd2111bf18360a7438f384a28d772177f648773b961a86637c946d7981a6b9f571a4c29aad07220fe081f1f18700f3c99ef28e76819f8d7c4c43d754cea21180c43357f3430bcbce1fe8952c691cfe9a7483026386a479eee4025a838df5c563b9f5a1882a2d7209a68d231ee82260a7eb4fc157936deab52618cba32772fa1440fb675220f4610d749a5b3b142f31b404d94d2bd816cc4773ec83aa1445a37b361e52b10960827e94171dce3c12cec80a1ec65aa6f117fe937673a78cd7767dadd3cebe0217f13c903ca25d6a681116b206acb46949b18f671a63fd2581a6c0978738460cc51df3711dc1215dcf75525d30559ab6bc52e16fa513753454888189348f045aee8a32e98cb2dfd708e7d42818115e5c61711a0c43e85a13657aadc24b5b30a04a43cb97bafa433204c18536337758c0db6154d4fac670fa3af148b52f24aa731c31f98464ca9bc975e97fd665710ee2c56b024fb8d7c7f4a20cc9d510f8eac38f96129c97b17c890417a21465d05abca02754ac3614e964f1a24393d05ccf5cb9500852cc9231656ca899f3538df30984475209f84ae8b99983e844b06ba4cd8a9640a513cee439ae13ad57d3846aea4fa165b68c6c03c05c835bcc5a63d45cc5568aef94ae7798bf29aa7f38e275c902236e63872a274e4776cf1928c492036166d04eed9ca64aa16ebb4b11fc3ba802c6b249e4b53f90112b587d36c6bfb0733a2ee3003419026a10a4c54c2be294b2031a48fe895c2c9920b3772f127338a865a82c3262dabac113c235d433b90d401f5557bb1bc68359020f75742c2008c2bc8862416910f53772a55376ef05a5eca853eb1ba5ef841f243b8d98b11e94483ad7e72fd7360a3641159e481ca50971a6e8aee73a0d4f24b25430ccc0997c631308fe2aaefcf79af5d2045932043d95933919b21ef87865b8550742a513d67af756c5958465f582983a777e9032ac43164e552358861a0ebc458e55865fc3545fd01b0e7565877ed3229f8267369c319abbb017a87ca662c635519ff418682af39ba387aa38ec37396b4d6ab505219314f4448d0f572f4330cf33fa1369872649c922bcd228c294b3213a216e59752072b8e026700ea63061855be3d6037c0cabe0c21f5be948ee4b18dd935ad358a5885a0331db2e496995bd47c3ff2b679e0abafc02804b6117271a2b00e33bc06250fb30ae2036716d30a50aa07e45f244e1f0100d749359b479b444b510d9b6d89b7001b237f4a34c57509f69208c7e6b956144bedc8b2d19b12c1baa725dd106f5418ed943370050808ed2636fa634add059541a7a8c7976b0990e59c20c00343d1c37bc3ab587e312991bb88a74227651b340346c58bbb174ac18c204f37445681bc5905354d834f86016d0921219fb467d829daf24901815666d664b8c4aae307485cb95885b7cb9125a14d4d988d3a42c0816ba7ef14de9b622e08871988b8c02d857626b65065551d5bcc81112384f979cd8d2b9ecb55c6afaa700e92e3ecbb285c01112a19cbdb90b8af135b235914c901e2314902a43c939d065481128f83ac801dc2fa69c912f2b69189736d72414df12646680c9c858a9afaa28b994531960b0f2b82fc6b9c6f10706930786ab5c6b0da61ae813cdb7387c27324499b111c6ca5767056070e608cf421af52cb45a842da82560dd86acf45a7e70245e0b535f7559a9fceb9369c44032c09302438cb4670925c7a831d52f083a7919e575be844d9e6a009957c15e6c5f84f050cc4801561876f9f483ded505b3c77a4a97788358801f012b59d716fed55975f8abd3464420d849d89c16dd2a95c372cf631a93a8897ddda2a038070adc2a97b5538778c0215cea399deb8279b2ade6c5ab84bbc8c6e181c091b7002a4d5f395bb60c817e03966b63ba76e88fb05b79d126ab0975c995b5bb2ae6550af78d80b96af40c9514f945d72b0c9602412242c81b60b2df97999fbbaec0404056195879535041231803aa7cf064b5fdfc8b86344d65eb30e52cc0d5b86947b8051ea93008d789914493b58abbd5395b657560f5823c387574db554118d06b26ba14b9660b4b390f8b828ba8a852870cba24a114a68094cf0168b721af8f0998e599b5db2135a3e9360b5754dd49155eea830f0035c2c116dbc9039cf69034c505ed998f8460a170eb5f09786d902664c8135ad77101d0b802248b6f3165a847b5c989131d7ee3135cbcb48b3cabfd100074c00f2e7bc85d4c84bec8980a6920e6f318a4bc805900b548fc7d98316c1b3c3b49f6c5d90595ff7a7b56465385620544aa3f39114e53581e851849726023d953b5df56b87be98854b253a39297f060449fc1c02725c3442a4ed8624f7f6abf3854cf04166b24c3b5a38358bae933ee4777df09720415314b152efc0b175b664c0c0a3521cac1817314d1e69fe03b351fe211c4c44639622a73a4547ef52d46b033aa52a79182baf49a8808fb259c048a04cc03f8a1038e9112eb30965c797f90c277b3549df4f757526351bd1a100767b4bcfa7489c17cb181b707986b9af85e766aa1f99b08aa2a7bc8a385d294277cb00d705b4ce2583e61c16be2b18445d051d7f0cee51703db3162bdd328cf0b0b24a424bd830c6574091088ab746a291c737e8cd595d1b51f9646c7813a8991f89c168489d1a3b61a82466d98ac9de55b4d5aa020243e638328fedbc93d341e1fdc7eb861bba3783a57c86a7184aaa7d5051b7018f3f18b40b69fd7780ae9609194db70123801729c561e973dff3a7ea5ba9045b24e5fe5bc63ea858c687184a8276612c80ab600cc37699583b9ffa8c5a1b7934f3c12873522dd1c4f976b73121bb79766803d247de1dff18807000000000000000000000000000000000000000000000000000000c69860913068eb936405db039e82a2f7fec48a8ea570bd538dc9741a6aaadb02e366c059f5f26e6dfba8db203c5b27beca8fedd3de2664f6bd5c3e2ac9fb3891
ciphertext: d4e89c9a1b36b648551ac2180f2f59158514568358f66a6fadd88492a0e1c122d1d7806287eecbcc8e8e6a463dc1c909f13842f734b9eb5bf690291c9d5b7836de8f4a28b8242c21131c53ebda4002b329a1951f469168ce0199f0a1d2edcdf3e6566f9e638e5a1095025cdb591aeaed8bb115ca3a1f1e9a8e911b2b9d3838608a27e50018e9a99e65b04adab67a75db892676c28ff41f118286f0ad2f5b650baf9441470db659e262e64cbebb4e808b1e7cfde0ff5c1ffbe1336beb42155fd9cb1cef90f306f5aa2f121b30b4d6091b19f37243cc15df2a0a16c4b5f70ffba99456f535af0eb0df80771150ff28c7925da7293878699c00f5136c340d1d06460b0ca7223f37ca553be904ebb7a7f41daa8288aa244202247eb8c35b7bc6d1dc8b95c220319532dfed22dc5d0f2f77a4bba0f5ee599420a94c446d89e3e8532117bd8ed0f7d9cb1f0a58a92bbf30a9d7c16d5ebffe16f39f682c18a8fc2ec0a551370c0e3ea706259f52333f5e86a83fb60b9ee3776f08e3f85ae4ee66be8c653cbe25e316e6ad33415a13e5139f53480625f09f593a598d6fd864729362efc3d09f5b171b0eff76cf860c8fd80583bfcae3bd7535e0270d622c2c09886bf9fddff6dfd045fea3259d26f17500b6b1e0b5068dc06a510da4809fabd615221f672f6d1d220c22dc080c9dbd7544ccb3369deccb76287c77e1a2af0afe133cd19325e6a77a8bf96fae6dc0381bb303815df4de480a9f3f97f1baab7774d7d5d9eda6c5927692fa2277934b0ebd30b4e7785f0c61a44357f49adac4430fdff3af956904b789c2dc9bcf87eb4cf93c48256ae13e90a1bcd713f77446593837b81baa6fd7050455d69a16b429018390a47e6e881467b57a2cfb043ce5a8cb114c4bd916ffe353579b599994efae24ced2dcf1a2923a0d0d8e771e7c230d887e596b80e01d84c908ec9fe81270f12e2f9ba2d783b1200fdb106e9d340c21667b722564a0cb4603dbc2193d3b455e06cf8c1d8fdf3e7ebe16a47f0181407f66c214379a5f336545818782835f6be2e9ad89f180ae0747067cdaff1f3b9386debdf3f057cd02f6eb00ecd656838e2ee5bdb99d6260c0447707d747bb6ff33ed65c2b3e22074ff25a7a0933be3e9b51de95d99e02ed4204f5ed8a6ff864e2f04266c9392c6feada8805ad44dffd5abe8d4262ddf6d2b1b4099367927b0bc075cf1d1d802f2d10b6d31d7f8c48b043340cae34b5b7c2f1e9b5043a0c2a977c51ff038171f8c81f04b284b2ee262befb6a54bdec146b84dfa116542bd13123ea79e4a660e44f3d23a0ce35ae4eb7b45611f87ae836081742d3cae6c65a0f93514bfe118cbbe7011e2a9502b197ac4bf31fe17016e184657b8dcdd62a223d1bd88b98aa0bc200ca91e123fa956b3d804b2c0ea139f934124f8d0c3f4412d8effc554f8364b0f351a789cae775b241cd6aa6d15251cbd28f0f85fd4f2a48fb467444f2f759ab6048d33c27832cccf9cc45fffaaa17a6f5e4b766f861529cb1a0641b6d3854c11
result: pass
diff --git a/crypto/mlkem/mlkem768_encap_tests.txt b/crypto/mlkem/mlkem768_encap_tests.txt
index 76b0cbd..bf37654 100644
--- a/crypto/mlkem/mlkem768_encap_tests.txt
+++ b/crypto/mlkem/mlkem768_encap_tests.txt
@@ -1769,70 +1769,70 @@
ciphertext: bb7e0dca6eca3ef57e945d921c2f80875556f7786d6bcca1312f86b3bea6d0f0a73f7d6036a7c38c62d4e356961ec6a28d8026a2d915d9721ef815147fc09ca65a3394aa5dc14c08d41cbe932337b9a531ddf68df20b6aea297194ac398f15919830e3ee6c20145c0aae7a2cd276ccad7b5c414212f0c0ae7106333868938a6a00da19377d996c7796d400606007dff30fe554a5fef86944d43ba047a00da5c2c2a1aad053aeafcc75a1e826a417b4c320e60a68e63dd7b54827f5b8b0063a00043f29ce8975d95bd418eb2ed29db0d9263c67fdcc153ba9b5a33279becb7ab193c2f257bd660fd7012712be3fdc2e52490ade145e8e030ba1ee5368791e6f3efe00deb34cb454cbf7fdae3a507261d9fce66ab58998ca19380187e3455d425977a8396cee3442935e24347aed45fba9b323a289f1b98691e35017ecfd7a423cd8d0149432a2063e0786c2f912e1134ebed188511c905a1a9890cd55d496e8441ccf637b4d660d93c7a46c3e17219167c3b4740878ae35766470b5eff3c6b1fc8c30e5c9645a94ebd48d2d40fbd4baf9d822deb26c089da84043340a564e6c311bca18c7a2c868831fbb866d89652556b53297b9c0040e98a692fa536af4c9a7aa09321ca27068ca66c665b1121ee4529cb3e6d899964de759ab915b0d2c571c5aa76cd64df4a4e55d9de59eca7b4379b30f8559db41e804a18b8771f594b9bee3de9ae98a003430aac58c141e6f0b7b1e5e08e27d1127b682882be055ba31e280dbace7878ae60426626ea4c5bc034a9206e27f578edd17fa6c33180b649bc7bd437b2c86ef4e0f4583071f99090b95db1e415d21ddd88a910b1fd10e3a04e391d947558a6619683ae070be04cab88300614839503f088e2f04cc4a7d091af9833a4f957cfdc574b1c994673ea14dce6ad89adebf5130d266c1440b3f544eea380ba245e21651f1f2aeb2b3d578000a87683dec69ccac18b0702d3d030077981076766e7e5f3ae1174eaf21bf03662c6bda5fd209da19ff6792c0bbc5d210851061dcdd2e4794d2c3c0c531e92a2c4a23556878d3e890b65289a6a02530bbd40ed66db3bb220aeb71fcc3c0b5d5b3afc71377746b22ce636dba028bc052c219783d468fac1d4eed555c1b4676705c8d27aa8a09c6fd8640a6f7b6790ff173ac39b5f3c709281df4274cccdc1e3b690ac0a77f7ece34cdf3216d2b6058baf5f649ff5036360dff99334ff06a366785c0404c584f623801190082fe5cdf88f9cf41032681e8fd6b84d127add01d4b2286af648b83fe69aa8d109c9320bd40621cf75adff8603e3da00be36f03ed7925f19b2e913d756e952a9402cd4fbffc0428cd7eebdd7fc7d3b4cde181b16b26811cd53d9f5d85d37c1670b957d4b3d04fd06567ac68d3f9dbdd45d182619180cf9292e86f42bcc213e94900e0c759e051bc0e30ffbdb91a2493913dc8b81ba4c3e8ba0e7277dc38dc91eb2b27823dac71b6f1c47e2a04136e2c0474fe070e2e4bf8e6fc98e73143ead3c5f778ce8a4efde4
shared_secret: 5b357f714a293b6724c0dc2e2c5509676782a9dddb050d88e6efa0a6d09d20b7
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6
public_key = d7dab73b47cd1ca43c7e036d41c94f8f31a0de404fa38a1da0992933d752acc0407234883488a581e340bf5a8dd7112099259ebfdb0cb094c8d592485f25729e1844870a3d57d63fe9c1295fc2c4a374508f359a7e9b062348c6c807322f1a2dc887a20ff1b8e951b103698492504dd86babc01339f5b0c9bdb01b65514c8df3a61abb7941da84b8005648fa0e5b094e54e56a56e8c840371349820dc3f48ef0fa488f180f57b5c0ad663512467836d6765f6517ebd0172d886430357baec25c709b3abb9c01dda27e2ac7c17cac7511726a39050fe92399e14780e3288ae775612b2c4baaa032af561d0356c43175c6263c5d9cbc62f57194c9f76fb5293e86d9a95a641325013dee98067d513525eb5d2f7cb5783915d0917faee635bcdab95a61592fdb1de202c439dba37a235e3888134249044519732701111385b9c91c2fc96b039d6483c6d1bba2223cb0f612c3f7c6dc62bf64a04b349a0fab73290acbb15ce1cfaa15c68d896493e67dd9a518782b35fe141a4d70bf33e97a616c51193b711b04a40c9634bb62726f748572155667146d311016880c670067c653e9a8dc0bc32865adbf41ba99f19b2dd9ac7998bfc8679c689a05a5038042885742a68ef84c429984588995a6cee077c3a099caa7a5d3761cb4411d1dab8fe7258c75903ef515b6b0629ff659436ff687e6625d2080671e0cbe0cb624bf8b367e780452ea3713804e083aa6e0c7adc15618cf223b3587a364320d56c58be8f037f89cae0be209ded78cbae29ed73767ede6793f0051cd5692f63661a257ccd9d859a92ac08784070bfa7ede4577e7ab1ff6c7b159089b8dbcc5ba56357b2659a7a04c8748a86991b2b775c2015a4c12341ebb419e1244396c233c161495366104b8e29979e571c9614fe10c868db56cd934c5b2d04986a70be8dc25d61cb6f0054d5e4000ef72557b712658d962b1e673a07222d59bcbc4e8339bb5b37cc1c2bbd38780f8233843ad420782b4951c3321888fc3b488897c8bab046f79cc456bba9f666ba261284a1285bf1a9a9d274d9b87788c225c0ffa20388183f35817e5825d450a1eee881f94a5a129e688ce6664021356580190a3ec5ed220b8a5878068ec5cd485816f8c1ee05c3c23ec0d0aab7f73aac249142d8992678b38410d41be710a285d3b593a8245e514a870c3c348fa45f99aacc464b399ecc0cb3c306c273e5f4c671b806864120a88c07caa53a550d52c5641203a7927b40631e21344a9337da2d128dbbb5f97b68b8e57cfbb1a67ca7741c60c2533e49ece409b0492a2e81523e6b6ad655a6dd1870b5de3690de3369c898b557886c4877ad1d67a1583bc70502b32a44afb9b60f88838eae005e2703ca26355ddc479bdf1a93756af16b7789a3221fed9a4e468b710035060752e884c56034b768d0a7106a4bebde7622bb46b6649195301192c498bb555c653c42f6d84883be82e8fa56ea303caac534014b6bbf38a9f73283e5a40b36e36c9d8b1a9856aa7d9913b22c40cb103b74853c53c3ab4ce895388aca8584449fae927b16534f48b3aaf350030a8460c8572bcc527f1f62bf1c5a9bb8ccf3ee66f66dc19286782911a6765c72db77ac0e976a2bc114a1b11000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 1a2dd390e05984bfc0f55ef96da5050fd9bb03891d4d2ddea46c463aab28fdfaf63d4b2e0c9af992e4f1421efc26ae86c2b296f6851bbe2e898b8bdf4057e875d4a98469b7d2646edb86a5eb5259341e0d14986a8ccf93563bc6ac067f8ff6997c2e7bbd897f02e844f180769fec5af9d6fa017022cb0af622b6e4f7a69d73ab01d3d09067b118d51805e1b6413b7a9e0ef292a6fca18a8828912a2db675f0244cd63d9340aa3ca00dc5d70c915b0061664b1e1d64d3d4dced3ef739302f1063442569efed0dfbe8c019c27823a3aabd865a47600ff9e24f748302bfca1bb60faf4105889a548be9ecaf266d8f02d3aa4997202477a70ee71b6e79dd1609acb4dabab72a38448758d8debf55369c5d3e0870ca193018e0ae6d0ffa33b93e962598b43e89d5978a9d55a608b98ceae5e897363f8a9e253acf8af560c57e07c4c4bde807620b6deb76d581bf92b7f514509446f5c4e4d09430b1855e62854988302c931b9e624644a636ab8acaec56d7673b26852c692e8325fa1b6215f24ebfb388ad1022fedc0bef272c87e10dca97df1e63f1a0e9582daae0f49e30c6acd119f7c4eef59d47443f491df846431cfbd23900341086a304589f52de1d862c26af32095e922b92650c68facfc13892430d428f626fba00cf9501e1e4646e55f5304c806b5acafe100084d7635702139725561522632e7e3871effe883298a7264a411484cdef78f9e721c0e5f3937f2fb7d40bb91620e473f9b97adddea69b3ac682e8aea2513b985fbae268176c1bff90e401a31e729fe8b76d13b5c8c85ed833d9b076b5e11acecbf0e96edcf8ff562255124edbeb5b9117cf486f30d7883aa353b9e433a77ac6912cc8e5093c12385ad926be1d0893afc7e64fb9ec55d3285e01a3ca63f3c07b95399bb4411c3f820f53d8350d1979ee9cc6bbf2d7c92d0cb2fd0a1de910d92589cf1aac29992489bc179676c31ae768869398fda50ff14860a1b4dd3bb2e4ba8b2c87aef7ee00d375956a62dc1e5d548a59f209448e62c4b1221631d4776dd5192154d637217d31feea1c4cb3ef1903b8987f4c184cf3d6b5355ad53c7bd3e0ae5373d9971115698214a93e12b98489cdd75028cf22c1da41096daca95854b35d8bbf7d0d4ca2727aa511eeb6cec5352ed487bd3b00b261cbabcfa9f082ba7300610c6f92725d532a86e00b2ed1929a8be7a342c079835a2285569dca92a808049f170fba39d990884ef39ca511aaf9a713b8d78973b4f4a2fde7ca8b6adbdc5a70241fe3ea7d005b33e48cc9fe6ce5bc2bae0746827e548332adf83f8aa707e703fd688c494136d8dfa50961a9e5b69b542ed6ae0e70ae159df95dd9d4789e284a675fe048585214047f7f6819f7f011141d265de9fd4c04f4ed5dead63fa4c8938b2f42108d263d5394d164b3254294402cbeb48663cf1ab2c296d6ada107e8aa5b505da49af96e1cebc6b302faa148216d38b9e8130cc654974ce299172cb875742e62c32c063ffe7535db2726f65fc8f600d4dbb1a20f
shared_secret: 54c35602dafe572b99aedb7069a59c4f7818c860b27a947347657ac1954d6454
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 3983da6a4615805f6d55c14ba582d59a40e646c7ae77f4835a51afc6c37f11f3
public_key = 47340db6d04313d3a689b357566b9743cace5d5b906a39249f1c2bcdf335f37aac2565932631ac318bbb7ca75db36ac198ac6b15a02173049721d10f7521a52f358f35f3719269a695a4b0fa03b32d8a209aa12a5d786d8dea4ba05498ba222eadd647dd5a397e655ed309883d76326231a6764a7ba4226567022d70fa20cc53a045cc5a1fc54abe0189a4a2b6bf8a969d61706944bc59c6add2992b6e562e9732973d32b97956203dbc523803ca0a462ae118633483cab85c645ee3ad51682c0596378dea5e93bc7ab652648cf1954745172a75c2bf6a3177a7841b089b6ee911149871a9d987c6d499b6e0c4d15c9b74685401b680d3e112d6d70bdad6a3f9954b0057335ca36823328ac4e124d55b9932d548f58b85a32844e9f0260d8a4339285ab46152bbc05a967c5f16072f16178687b0bc06b621f5a4a14ef86b9cf1bade0185c5c52b3f2c407479467e5516ab9a1128260317605d4db250e8f4b59bf28a6ac2606d280af28664b75092fdea1fe9374976722dff579728e121fc1944891c586625a880a7bd154aace3e919b841b1f5f8c0fb841d1eac1fb18002ece216d42cb401dc1681836c1198653456c9392944054200a3b95b986a396d443a306b66018b525fbbb042e662ec108f6b872749d3287440c12bd07d1061a524a01ad7342d74f8a4b76222c5a439eef4235d51c9494602f6624dee256ea7fc09ceba9877f9332bf195c43502ee43c75e78720c306c2fa47f4ef6b7d69038dbcb8272b334c98cb665b306c04252fad3559eda4b96c14bf50b78d4a9a37081a2d61cad33b3b9418bba25409fbf4a5bb3c775a43b39520b37b5b82191b4983398858bbb0c6c8031b9736a5f76cab0e647443cb6d983a5e0a6c27756cbf471baa17870015566db8c8a51aba969e976a1c6cb2be166f20680893950ddf09cf8e3827a2a884a7a65d61c7c70a522d17ac0939625fe63958741255b012712e76fa8da809a8cb447d730d4097bd3e86471019dc8897bfc82c3804a76a38919f7cb50ce79bc13ec4bdda215bda9789503aa822c71ad8107a35818a7cb055b303338e465933565b94950c11836e8e33ae8093b0aa0c5d5d555cbec5eb4190eecaa1525014e8a341e9400180937afeb126c278a5bc4713fe9c417c50c1e47c8756fbb6a6b265bdffb4c1456c5b7d7a895b6932dd9a55623341354549283ccfb36abb3068b2db7348bdb1172318357bac12422ab93a32b453bcc0faa4e8e595b05a145e614aded6bb77278bd78907b828b18a22aabea48bdd69cab061522a618cf39406f6c78cb983354384415d8b857cb451e01b24f489a3133070d775307fb61a0f6d56d1255c4d4e18c62e57d8422080cebc919b81e67c4304cdb560ab16d929413af650a53f870e8017e90096452ca3ea648ca644010d34bb79c5898b775b197189a55840f43371dd9cccb7b4a28a66309a515658f06acdddc47042acee250a37632b42af51adf1c0666902fe0acbfc8f59127753a40161de4ca07a5c8bec0d8ad3141487da4a842147b9de945e4962699033375548d680b88ae8354d6114efe284517778eb9b7957eecaf5b4165424a5f82f100d02b7d39968b98f69c2cea1a0b39394f49265b492ea8f4000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: bc07d2caff561b4645e3878d1de0730a88c05f46348526829a396f05a0a00603f0e2fc79e13beaacbe903827c20d9d687f3fb4eb2a8e9335459fb21380b8bf3734518778d8cfae9524ead1427c6a2dc379ddd2e985e2977bb63e932ed59c83a8b9a593e2adba0cc5f106620fc8c6c4cba5106bfdb4105def0c1d7b6800327cacb964e1d4ebbddfaa15b279115a1d05754c0c8a715fc2fe5aa09af7b96d5a93e758458aa5af8cba03b942f4d3c0fbbc2a45d3f7af5818d67219a72f4f538883ee2d3e507e2dbf4f7748446443bb71bfbb4eff0f57d8154d29f5cb26cfb52c51b676e9b1ac08786d5f475cbbfb49697a748b7902a83da49d285a48c7e9cae74b66a30b02a353a287b40a66a0663e7a71adab7d03272f2ec32d47097d4c303396db3e7b7a947f467a70646777cda227d72310806107b5dc16cfb36918e88784524e3a46c30242a40811593aa8f72c742f885a9623534753b2bac5e29110a1a854646abe1c0337251e85987aa612f3a095409a5a632af14acd19491577223c278b18a9c3ffa7f72ae49b89df6dc45ebb2803ece96cfa94ef9ef5b24fbe686ff90d130d3ae953a4f9ee6581a346b0612f84cb6ccad4fe94a53602817d67c61a9604d288319f5933f4a97dcc6ffc36cf14db593fe27f873be712186a6695d949d4552dab37e36e2e0ced229ea9dccd6d3bae22f9fb888ef400b594ec08a15972e8d2478e50f11947b52bf384c731b0e50dcd4ba116abab8af3b880c54badb11d83b4266d3e5fc25c2c8dbbba12fee2fa5c2017987f31277a67ac702b8dbe110894a8c81011c7c662ce9ab96a2e25cf5056a3e202dbf6bd5bef2347537f7811637e932d13ce02283d48d032c284b6cfb84fd813b6c3421017a7527eafcd3fbc5d4324b5351b30abcf1b366f424a8a0b5edf6bc1f3e8702b03eff875687c6caebd7bc15f1118696cc63859e3aab75aa9acc58484da7f2bc9a120844e4830429c0eee2b2324890bde302bc93f661edd9c04e1183528482f9950654e8c267234245aa9482d94e90e00e929b65431f986e7bb34524cc41f4b4443646713c7abe6c4131a2d67f3bf42f0a7f2eddf82b5c08a94d99a0a7d14c1b0b375fc158b7d4276eab22efb438f0d0a9b30e9dc127026181e42643af8da0b24bd10a532069392724948ad722b25477b481006fc1fd030aa62b217e6695dd4c7ad34dbfb75aff1df5774b061a4ea8526e9bcdf9679405c0d2e40dca00c9e80840e832fd663596dc55f602d094253893405a02d4414f119d23c4544cf832888db5ae8494dd2e8ee357753515d929b8a37b5b45446ffac20fb204b5c937f6344c453ffa449fe839b4afe1da61301057338fe29df93aa962a7374a2ec181ffff9252c8af5c3f75ebee02fba58a76066df4c6acfd5d1c18390652eb2f469d35dd708e63a498c08c5241b2717333904ba0e6e0845dca8c9608f28bd1046805cf7b220498145b23cb18184a259458dd2fbaeb1c383005a0d289562b0a9daf7d1e320aa302fd3d9a02c65fa901d46d4
shared_secret: 7e1b4195e9cb70e6884d3d00f0b3f0a66b4d8c00ce112e1e79a1dd236ab62b26
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 2676b8426b9d6a30af007094bb76d65d388c2b3da938215dd6f6987206400e13
public_key = ddabceea01649d9c6588d68c05e93cb6959fbe348468cb6e7f482d2b0507a097625325a7ff5740086bc203410414845a177c578698b313842dd2737d79806fdc8aa4ad8b91b514b6aab60885a49be68ba60d05891dd1cb47c1850b0105ec15a95c93136f22a170e346d2256a0cea672941335423cde35492967759b4317981c34fb0d759a2b08aeb411c362b2630c4b8ef342cf844206d7a5a3934bdfda95ba9fac912fb1844a0bb62041868ba0e3660a5551951b39880eac2959b5028eaa765492416ecf7a05102450eb20eb2a28be460972066b41ac87abcc28b38a7c92d91779e0c7cc8b42f107b48269521edf0c558a1b767536d295c3a7e60b9de6a8f299563be7c4d33d33940234af8c7764b181fb7b5af1dc88e4e830725533656520af7344e4ab40f6df34a90a898c672b854021d0631c1b1e9999d8176b22a5ce829a240642e19472e635a83c5086f87872f72a62e5fa038481a6861141227666f9203675db45a444c6310518d86a9221c9b6bedd753bb7914f7995e39031963ea056536a96c9b14598c95652091dba9210168467d7388b73770aa905052645eaa877c6f8a45acbb775d080521479314e214a5217835667dc2cc67dac17b0103b1049a03585b30631c6dac53b6d4056e5877786b295fe94c8804b57a027609bee938a8812666d12345e04c92469463443fad1c2188c951cfc6a06c3b8c3ad8856ef26a67b7841428a1f5b69a3fb82cad843a55645b78219d6de824701b0b1f192d4f816f45032b1cd5b465d33b3a9cb2fb04cb271a3cc74a8bf7ab6ac7a00e8ce6a0486c660680219c6ace0917b31595584f4756c9c5273ee36c37d25d5da146e57613edd34795b9cf61bbb7ebc441d575631215a87c4070159136348854c297cf3ca44fb2814448e30eb2c555aa2393bee966ceec0221a278f048aaa6d09b1d801aa0fb369ae4480f051329390af222712c61a59f98a31a03ba90c1a6c34c1c98c0be7bf59fd717ad9894786acb1cd081405c66a2e79a1fd77cad853761461c99218aca3cf4920703654fb9529c106f41a78b259294709bbc91679d0442bb383c28d64683ebdc7b94f4592c8ba2c1126c9dba9377040d3a124176fa33a3905cbb96764bc89a69480b74e38f558b422ef22e390bbc76e048c01129c97c26125bb2f86c4bcd274816265d8c41167223b0a22406d2a193ad3b1083b0cb75f9542e55b9aac02845f59618b5aa580b5b2bb44c192a906ce61b8c368278618d8ca8409fc02bb9b097acb208e3c2a9b651a316b70cafe6b9bdb32ad794b4f018b66ce55639e5558f5a3990475794bcaa06f17093d490fa583e6fd9596b40958359a30f813b940b1e1e4223d3857cfea691eeca944de845c2fb502e35a5f1a3750454593fe1c41662a3b3da407aa269c43167acc98f5f3c662d6177d3594d0cb800087c6a525c586d86c12e941b046625d90c8ec6dc8a5c546abb19a0b585aef39379db926691124265103bbb49cfc4e9100c803b4ef68a904273a6c899e48609bca003bcea9cf82203d52b5f9b65c409ba9503b3b16c7077465aae45d2cd4ada79ca43a9e99a124b7c9fa24a323f6c6bc18b81d9a6161191561f3776740b539479582a46bd913ad73e09000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 79efa2d537baa2b87a787317162d3dbcb40cb3c25f540ddb91aea6cea9870bbc5a5f86f8900b913fd4154bcfc7c8a463b9b66118c502ddad539186fcb079664f44a5363cc8d80d6a4c09f28cf8952157526cfef7bad2fc2cb69ff03ac39e37d47faab64cf54f63919303badeaab9e59df7040511ae335c5230e46e00a666b994d647d11cb032e7ee235b5e18b1894621ae93ee129823334580381b857cf0360196cb75180410f9fe7558d0e189502a5dbac5b4f0597cb3d1d201f89de26f7b4ec0d200a418a26cfb82cd4496c3ee22f6eb60f3ad2e1af981c238da13063d1746d65f77ce0ef30894468b687b31443c7acacfc3b3878fc9ec56878e7bd1a9f72ecb1706a4e5face0a83282cbc2bd15c89afbe3c97dfaf395a96ffbe1a3f75af03311afc69dbc01b11ffed2aeb8906505e910105806febc6e1298fbb5c0bf501232b888b7e8b285953d250b866a20cfdc7833a732966b3a03485ae2852d0a3fbeec6dfd0ec8015db5de69e55f091e956ab4392834c5128417105541b1145b27175fe35efbf3102277b35e42bd83aac25e25da6c55c28a03b9e2a8135871b4cc49fbfd5598c9eaa2482f249c0b6332a6999306be55921a3016499bc63a072a6e9eac894a3ec209177d07208d0d271c47f8065d0facd2e975011944f7884088768fdc053cf86f31f6d348222c06467fcf8ce0d404a2558e8cc422521a4e249549037d3e8a29e03a9a9bb511d9ffef4c5185a380d874732c9e862a6e8fa3fb72b213dab2ad0d91b047440b1d334660067566e6d2e14765d8fd0a45b9b8e8566419a6d7138e5a106c31b1278d50027d152bc8658d7045cb2297bb8382585b38be2d5fafaa7e8c867c74be013793874f181a9798193dee26fd5812eb469d1b842a969cda65d3440c67b00e6d1c3ae8630165499c1b4cf3153fb5731916ab779a2562ec62637d747d61342d832aed330e5cd794de900fa507d4b5fbdbc5f3ec1aa69d0319b3644d46d9502d435c1b5a329c0d3524611a145e3024595e91c2afd577a422d59d4d54a430f439534003be467b6f018736c4bebceaf7c83c799c2b7745ce7498dc84b9e455b96410dba1a0a5720fe703b7c0d859a42445eee7ca3353f294438a7d463fc3e98f4403f93b5fc4add88cc22db7bba150a2988639ba96cba8e2a0c980c9bf8cebdb5beb262d79e86cceb774750cd9a192ae93d85e60722ec6590beb7df8e4d036837c97dc05c7964dab00034683a576da5b51aa8a0622edc27975978c7daf1b942285572b09c170dd332a99bbf703d84becc6a96373fd1c0b355f063e4c2c6e59f5437802676000a819b9b99418df893b98a8e6ca22d95da2c151fb24a3a0e5944ac4ca6376e6c281b275589a3907c0473282967a121f1792d09a15e9d71e71e73f9f627ef0dd478061cf053af434b0663624c3bbafe0f37d7a32504e9c686f41bf48e287aaa8fadb73fece907f26a9576611ab2176a58e5c1f3e98ec0248a15774434c2a81c7a8f57f9950b83c0d3770d17c4e57582387d6f19bd
shared_secret: 2522e72d308dc9d7d701e0b024af9e15627572f13573b27c406fa750df9636fd
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 319c51bcb76124b92f39820a5653c0ecfba79ec91d632b0488f4020e5df4e37a
public_key = e2c1184862562b91806efa62f1b72a8ec43e70663de1f66a59687ae0cc1d9de1ce69244fccb0841b4b1de2e964e29408094a1ac0a9b4daa836e94454ebb942c6e9ac66f39abae73f61a99834292ada3c824bb53c8e67912a07377da92e63087f8d947f59d94a842b7aa8832b2c3c1aa957577f55027e76c106f86946f036804671b0e0416cf62e70eb8194d88030e2b38585181c4ab1fd8165a821bd68dc8fb3b403016ba5fd129bb9d23182029c4a292433087632816c009a237a608e65cbae17d688a326bd6c1ab4634576fdab2322b983f29c3e63b31303cc386bc90641c84965572c49a91f4e8258764834f38ca7f869cddbb10674d4296e5205ad805ac48462d3b31a9e6067fc0a27470aa593b896c3c319357b9bdf0632bf0786fadb0ac242609462a06f82460ea75762a678fcb07c350649d13c24c9e33200c9ca0e9bb87dd2c8578c7c4e27b1b75681a0b6aec6a55e767c4e14820f2ea609a16b862d5695556b0937f53e0ae370086c8f771295b1a09f0003a07bf512c4272f7241752a6603f8f51ea9a088e5263a59eb0b13b87a1d2929c2c29557681f180261f46c294de4aeaf380ca5f79efa2c64ed3131272ba489494ddbea14c69c46fd6346a7ec9f72d89559435e139a67bc3240bca29b3774127dd85d53c20bef719724612c462bc598c54738c87a00a9cb8c4b44e4e7ad4573afd9324fcab820cbf2091fd83fea52adc1b82b3f6c86369aa358498197631a20d40c790c2ddc66b0871c1ef882305bd978055bb934467d3ffc0359c2b31748cb19f615a63262fdf695f555be1ac432126b08e4a97acc18b8606ab6adc5cbe4589389e1121d737ba2b3a84d02bfbaa669f3a06b1be13fafd42a1773c830749cad35456e956c0ee64a5fcc46f1763c3b0c0d3de5c296a28f61194ae72979add8c7ce710d4ee846af81cba3e18d5e459addea9fb565b010e9ceed5798155227dcab155984635d7539d68c9f0d30537ce8b573b6bef1170540d0c10528737d6a5b219b2d96e5709a721b40536ee3c416fcec0bdba013b0fc0e786c9765d312692a80a5c9a3d65a6662788d194722d63b4bdcaa700e4c3daeb911e4d45674c3720be35269a21c0717a4c3aa2f3e1ab4f20a885cac44228138ebb70bb4548dedf8678d2163c339c1a9c719c2f1a51748571358c1451b0ced7b90109c98591126fbe57e1c913b5a935eff14450a22c4a108108b99b6efcc9bfd8438b5024677144885f1886ba068a6191ae17b9ffac1087bc94badf510095baa7167a7fe245a89a2a627d2631706a15d5aa081d037a4101b217c1c45fa0d83dc790447121cd9a533592cf8ac424de8770b45307f0aab484467c4acaa82a5669f7621e8ca42ec0b9222766b52775173b288ff5b01d70a60a853aa44917b8cd09a4b666138e91a3206c97877c96d690957b58553018f55f168c1c51bd9a48ae762a65dc73f366c79e77c42e793750924bcc1472cd5e552e20868a42047593842619c2e0fd40a3c7bba9557bb5c71185430a0158b9b95d04fefa266005141ffb4ba5160a5eee1499c09b11c549bc88cc501dc94a0a5828ee8a776a2a4aba3bafd410cc8354216cc3a93a457e9847af39b898b04b60a0c661a72a2df2b000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: b0e578cabf9deab616e52934955f42eec74bde5ea98acb022c427e08232142dd08f9120eefe5f455c8f120e672cb68f3a146c3aa457b637d0901fe2b4cd45e8b208e06823b8aae09778cd00fff5bed5232d219a2c33645f2dc30593e591f697118a8472eadbce05c9fbbc5d4b717b880065173cc0854182555376dbbe39194e4204067358808c890e5fe96028921fca344e3500b615f2201a1c4e4d13dcc889cc9b1ac72429074c21a52f4c78ea2c467d65cd2c9ed682f21f31b27af4eb5cad33dd633185bf32e726fe6e57b03168803f693bd85f5a9f2c3ec6944e9ded2b8f3270a89139ce50ba6ded6bc6b0be8893f44aa5856acda60dc1c4c0834d45574ecb6183d6e59a183c0125ff45c718be2cf85b5ce6daae6e37336ea63856561f1bd4404df725d5ed9263038d1c623b2e1aeb35924b79de474407168834891af783fe5d83a631eb14d7cfa949d698ffa45e7d8c46ed4abf75cc666b78526c9b95ebb2920c77c56227eae6c893b57f9f463ff2ebc9acddb2f7ad543c5b2259047a4cc87ad05c08bbf02e8bb267bc490c4b67106fb598d42135c927fef3397f4c3f6838776787f23a9759dd3214075e79eb3929932becde84e82c257e4638a19e1e3312cfe09d4ac681d653d749c8fa6efa6dac35ad59399f1e233540fa354681ca55db90007039b7e504e2e4082aa3e4d672019741aa02a281454d4e1c73a1c7d0b5449c2e143ceaa3b18cb9a74a89f1ba74963dc5dd4155a356211277af3a267947700a2cfd84a605ab02d37bd6faa8a26b50f7b3d9bdc79913272c31dcc0f0183d05933a9f233504ddee2dd851529667ec5174a3d23bfca197538ebacda36bc29ca675384c0b3f45e4f67fb66d8dd4aa57b7da50ead391e6b663af173e7f4d46139f5d0f4cea84dd32e4e718967c6b93617271224f2fb3a1ca5febff5f26c4edc60e9acdd9e464ebb4571dced645814e1038a50515a7e06501adb2de19fec4119dec7548c41097964c3151226153ccac24abd1415579ba1c37c805a5827332d97ba90713829fb30b7b09b275d75bc10d4a26b33980a0ccd4b00844d9f379551bd0170ee895286526ea9625a72b6cb8decd9cf18e57262f8102a025025e8168465a65a7c7e4d5fc8742781acdc16171085d51dd5ec9f4f71f58cfaf4557a55d07e7c164ccf7eb427145c7f9a800e9bd9192ec0f74d19fc17d3881b1d55e8600aa55abf78fd1e226d9dd6e8da2bea15712f5f43325d4b9c083d6e37d35c043f2bc8c796ade072555263331bee7fffa54e2099135ea363575847abb770322376cbfd3f1b7980a1857c55fc82aa80bdcd701c7b7d66221f08492efb5438a04d041b485bcb61f6fd306e96cfe758d99ca1cee70b200eedee86145fe37ab7aafcfbb2df694361fe9923e754187c3277cc895c4a53732ee118c7b6156b55b30847a6e828b7069a5d4be623abff66ba87bff49294dd9b1f698ba445d610973d052a80691c9968e3179aa3eea5b0bccb3cf674c5cfe7d2c14d7b6daa7a4813abcd56ef930099
shared_secret: 1cffb3d6d9dd9cf90d79fb2c5c974818c5bd6f32ea4d44c302337c4cbea44334
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 00ff48b3769ffaf4e91c1c9110eb8ce9e2cb99f060b486b37035407d2f4ca517
public_key = e8014b4f4687bb6670b1c2a29ba577100943d5b926cb396423663f710328a8b536403530eee05006e7a7cd679ea44c29146494f1775cddd3b43ce6a903283f7890979ee98842d5a76f93777297abffccc0b8faace8f362c081aa435c32a5c31773bc046e61921f1a5707579fe36067588a0f32e2cbf91aa3ca6b38a0e12ffdf8685874869028775fcb7d7fd7a1e37c611316515638a510a13e950960e6f39395e436821165e734837ed575ad510d4fba6c3ad67e039b71a9b6c2a7ac240ccb3742d65b4b1c50a6a1a496995da77921ce33624fc48135e88c59caa47b299605ac1c79009dabb2062e375547ec907590b9bec52c86a6b9e394ba5f02401e4545c462c5f320939075b516c4a5dd0aa5d879456449a115125369584a609a83df8685ed2ab45f038559dc6b0ea170b09680e7e747cc7246b6c182d9199941847d9c1168a84400da2a98215a9e96f6bc869035a8822b27d459cb52147d966e0c354b70ecbe46daa9034074019acdac30055d8a1a02741ed8e602e2cb3185ea44c9e61fab637188554c8b12cc5abb9073b35108f59f6832112ff23b00acb0936594c00c0534a8c4c11cae4787092bf497b60b4a44116156e8368c0c950f3677f6424690803ee92373ed5c13d84c355bf041edcc872965816d6723b344244d0a54f8ecb0f1703ac251293503baac445996a1c9bd6ab851eb52f042692a2b10e4b9b44dc9625973af03fba67a3a93ff849dbea64739f643bfb803ea8653c2b9ab9639614000994bf48a8024c4e61c8a07a5c79b19540084bc7664ad44122e46ca1fbd517c8e68aeb3d835e53846848742a9fc2a4058047969bc11a773e623462c7bac66a34c62db861ef64dedf23c0b7441f6b75b4e60b86fe309b1b7746d558987f6a92cb8513792360ef76cb6548f0813ae8dbac418c25a1d95b06c530d79c6751e7569a2027f8a5354de3a70752764fabc632f3a1bf2473e8aa2a5cf815b3856a89afc122d98ba3f74185a3b2c09049601e23ee226329f024ac2692adccb2018b22a592a450b4a5819b2a498738d29f7145e534e527c859f05ad96cb963314c58a5a6b050ac6ead9adc4782859e3383170cabe4871cfc17a30ea4ac55cb998e77e1a26662a255f99f4ac7b98723341b2c7134adcdcab12a473bfe001127bcb01f84df31384af06171776263085bed1aa3374da7136648608b569a88663d2122e84b4b946b35c1f24a836e924202b7c7828c15507b17f906bc0e4b28c230134d90655696edde11a32c7a70303aaae3363e2a6947b4bccefe9ce62953f92521029959096a8910e71c51b69a0615ac790341c0ac3a574a79d34c11b4a974ffd7cccb05995d4089f8186b545b80a166982cb53123ef644e82897c77889ef91bd8c5a4ed1a4a414389d77307d53487940fa32782061e8458e0c601c884321d121b48ec04bca78c60d39b0c4bc9291945ae18224ec73ab7a451b9cb511bae34a20e326a497cb6ce46b5848c289da630f497ea3975eda79489f18a405e91bde288379f291f538c1a1426cf1634bc033098bbc9958f7af6e408354314e7221c37c1610bf904cf9e7807ad327f0f316761939674867ec7223f06a245711b0d47832b1a699badc8e1217798c0d000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 3159aa52482f4262cee553f9eb6d853d091a507831f5ed1af37b9c55f217eb1e87e8b0dfb653932c27e9e9f2c4d45cf89e9cfe9ba0d5175be56b7fe3751a4255649cfabdf0cbd5a8704d58511acf6e0580eed572561fab262b24d39c3a430a4e54fca969394037df12fd8cd71b7b6ec3d8f7345b05d4c16c5871b686690cee9804012a3379bbcf720f405c3c83f59aa391cefd8b00a73b41147d42c8b7820b0e779c44e032209067349fa4cd35e83850ae37ee73f96fc6bc5b71ff9b0462604b4e07be60cc76903175b045b908c9b8e7e94c6bc7c48ffd49698873913f9132025e51614317d27a874e319d802923804d1ce1626420d5794bbbe5e077cbd7fa3d958fb2d9608a3d41f605908d21fc7f942e3152337115a28b661f76405620b056692bfcc066f370449628f8e31b7453e5b7b10702f7c195dfb779fb3253f86acbaf4444ba9ce01c9b043133a233030247f8fc44d5b8c9b024ee83c186a62ba9fa5a3e45389217884a478f238d6a9b8eaf3d87b7b4b4375d4d5226dfb80255faab42380365b5511567978be9726d21178eced7294463a348b1e976d800b1114fb8230115b28e51f628a31aa8cf2e3253a7dccaa37f975fa2b8d32a6b6147033cfcbde33ab8857e3a6af95e4cd0db62fc020f55c2d6c9204a05835e2cf878c66502f572016d95b30c45c2ef6048471ad0cb7fe14250dddcb4014c392c22fb1dce1adc8e02f416d3e9b417f41c1b4065b975de472d0e9fd5b3a012ee9bf6311345b4968f6f18262bfc2a38d56d911f9efb981813f77a8a8d6af0618e015b8b005e7ea957f89f140192c7442a645ea7012b5ea2ba9f8cd2fea2ad3e41c6a57582237d53444fceaa933d61eac36d03a2865bfb7f12fd8cf451edb5050a35a75c95dd328296dc32daf61622ce0cc457c5968414b634b3e12a0ce45bbd733e3982c087a037d89cc86d546007bd92eef33949d19dbd4daa18e59c7ea3572bf3155a9a46af527347f4f4dcc2be3cc285d65f2f86c681a137850431ce8d2f76e295e74bd0b3c88f1b68885522dadb99fe1c8e40d938c9610e466770d62c34e9393241907d9cd7bfa470cb8fc149306d9450a7a1887d03cddad3fcdeda1ea54d3f126bb29a1ac3d7c5a60ead90d74ccbf1a75b4289a74a49e0a7c4006ab76a83915ebd4a95a471525444dd2c3e748b1bd347774e2cf01f90f05a1672c58f4f563e4da083e95e0fadd4ba57acebcb45611a3923da1d0d73f5c9a55489fb0097e123694e413460252892a0c6317dcb56efa834f7a51db4a413976afcb30ab4dafbe737f43da11c1b08a2472cdff3995dd7d23382b866873624fedee76823d37ec230dee2107258993d5b802fadeb89c9469a33c66c91567ea92581e0c2c1eaa2e2a4696b024c7c6009687d07769438a8b2ba75a7bfb32841dab8acfb8cbd4d1e26c5eb68bc49bb394b178e6f89dde843f4e2c5353b04390c245a0bddd1aeaefb87528b719fe42b35ad2a89ef34826d9e23f95b1bd3c3b24f785985e10dcaf0eb33f5f71f5cbe55
shared_secret: fd9e333ac811ae8be12c052c65131e3a7a32ce82e39055012ea564e10acaa85e
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 4960ccb1276f96d7aa55885b6ae6f90343d42e1391e8241b5952931a979837e1
public_key = f6513e1ec8234bc145eba3446eec18b3826b2ae709792648e071a7c4627e4ac7716db5b1d6040ba7b8ac39b347ef721a99c879453846e1aa591b8495e19003df973580d4192cabb72ae2b1f498bae9b3cfffc8bbce09122cd1910a406574106810dc556894777f35316c992f3b902186dba411ca3462b927688c81f7269b7c2770de5aaf90c81f752a3ec77942729a68fcb38a62946c601c945249bf0e280b66764ba71a44134ba84df1400bebccc61456fdf3bf50aa85e8e60f491ac1c1317d831ba5db6601133883fda81115c67fe4691d9df01fd3732b336bbc3899cf067b9e3905294902ca5686480cc94eb4e98260408b4dd060cf4b5344380c89d564b31158ce098ce1e06b91446c4189c6a4d89aa7e81befa900b250a7060406e25725e09399963c5e3e04219d390e6c28983e335646485023312c4d5bcad9aa7ee683b935d71af1908703fa2c9d66c8b6c55049b3319d39c047b5824d04975a9034e8ca1a9e1a5b0bcb222c5b5c848818d14503c31270d4f8446d013d4ecbc250b72dc25934726b426afc85631ca1065ca6e957ba00f1176a6a45b68a5e93274423e642451129ce83b7de439963c0c4e5d8b25f3b74fc053151610b4263725fe51423e886bed19c534165b4cc90fbd67256839b9371290af9853c948251c768e157041ac91fe6649bd1b1855dc417624b8ca0d798b1947c720b3414db56f01500fba30207322ede05612bb6505818a9a68538c9eb98f2b0a83dd38b765891f0d01f1db768d2355fc6b7a47414527c92ba104637072a72a6c0ce74772664e68660c9c0c28347315b17273a6846a79904a04b90a60c5b15973630209d9460365529bb72524404b3d9cacc013b0a7355a7eb2172d317cd356a07e5a341bab7c33db5a48fca4b1600443df6bf441983cc05125f6aa94f114a8c3ccea3f9c498c1126c072f27e97555456114f6bb3244c4698c3f6091864274a16bd82aaf0711eb8c4fd86a11b35b3b8b0528cefc253d7906b6b05382e37428253ebda5b48b6a068354381b24348dec73c279010bd32e41431d139a021a398f0e5c7fc1a98863f069b9d42a96b029455670caa89e0b867781f73fb7549392124485cb032a008d63812f832cab899a8d5d24b403e76d17d6ccb56c729e15abb2e04e32928c9b8971be6a4c70b15bee620eef375489347df7c622d9a803a86c2a9ec5a7a0554ff763912bcb7f57eb8b8633cf6ef39556162eadf8c285b61a53f4837c8c9ef48c3a58b3b6c31b8227c98df0b9057d452df2c258da8a1de1b99449c0054c48a0bc61a2336323367077cee252d366661904b12ea6215b3ba55aab06f60a517704a4046312731325df563cbed805e2c7b2a5848fa1cb97e17a2f926664c2947a2fdb56ed1b3c5e084a680073669b2b9e888ee010410acba461910795958e7c0c98294865cc700315e86a5c54912dc2affc2469244912d8180eab244332a00b7536c4cab62345872dc31ca3c0d2078d07beda4431f278aeaf2482cde53afc56352a894dfe3948fc14956917a4dc836f54369eacd4af052b4aa6b60af5e86bc868be275abd1118a83e5acfdcd4c92a3c2e2b13cce7101a9d303339f0b2dd4a282499579b803ede0b26c75eb8af34000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 5ab063c95a541d1be3fa0744e0db7e0ece17b6b47cca0fa41d08e7969fe87de63f319f80b9a31ff01e203de6e518e62e6133edd108e5a3e08d3f8ae0556cfd36b399dc1ebf3b229bc5013d06d7550512280bad2b27657d3ca0679d9fc62f0bf875dd0b326008a89b4f29e97211ee7ec75108a9e4a320a34daed15fd7ad394a1747e4e35bbe4f1118703c330aea81bef3e3883fd41c3efc3423ab46b553c7587894ad64db57bb0fe4d289d54c8ba78d40683bdf6330ccecbacd3f7f41541f1f2b1a7626d3969df6586b4214c02f921451f6adc04f5e8de1e3beda82e4aebc5e06abb33f4cd8a3b3b5741617b6a385739133cf5b77dd5607a5c8721d5b51c6c0b6df551a5b440082093f49f31910a04e4226b9ae6f41383672e0694bc4075207034e39c40668aa3174cfc8a75fb1a474485e9aff01f3572a5c7e4914e7519344c8ce7b81377d8c2af66bebc558359601b21beb984c1f00564d46585b4bf02c958c6b348642be25119b12f34a6e5755588f649837ba53c0efaa4c6c95d109a4ce1f761c1dcecb84cce8376cb1c4e34ff932408ccd2d06f20c5397f6277bf9c3234b20cedd45afecb7e87793d85af15909546c6ee41987f36d85865c8c1e281e13d9575abb9a9f215c08d89420535f73643dc584707deb7d5275252e862393fb6493f9e126c651b7981f26af8daf978153fa4476d615183bf147629fe36de7cceaa670dab930ba8a684b0bee24b55961ea556123b34e29491704d2122e46bed0f6fd50601e13a5d46c907b915f3b8e695e0bbf474aab6e082d156e79e59572731b48338892f2268dcbb8fc21cfd537979278ceb210fe3efd052365fa249c97e8e596ae6225839e5b8b296770f3b42240b8727a0a730534d0f42f8c6ef148fc04e4285e1aecf060c3666fc17a1ff794f584b26b0b1c41f0fcca249935cd411a151932b09402016a99832850b3f56c4846145738f709f5e11e28a90d9137e4e43f03dd1ddb6565c67c2a138aca59e8aebcfa61984bc7ac13a60ddd2c1f0fa84fcf9264ad5049c888b9f555e024f0fa685474e083025da168e3b9c4ad91f074e7e711f84bb808604114e09d1ceb83b697cc0f045b5089b0bf7381ff2efc08e7316ddb7eb7be47a1d82cf533ea898e668f0da124d2e87fef2b558f877b50b13a08641c74e2726b19fa7c0f33ab213f403c328ea60d08c07155ca0c19bb75f7f6716de89e34c20f9d15ba8aebcb98e9b6461477f56f9c65ea7e8744a4d7306e216f806ea8f9f1dc45781c1adba44319031fb9e81c6d33bb317d959bc53a677270f13d96da19833965aea9a18172f6f975bc4d03036b1239e7c315ecacec35cc0f788be1220c0497844fe7c989fff5ef7fcdf89c261a0fed3915cbfae94b1fba22827daaaaa0f968f1ac71e9772aed587d607d5d3f57c1500b6e08760e0b971c1999d01553bf87f55fbad96ce61d0750d75180623543f40e5b0cee74bb429edbed1b4c2a3e1aab86c8dc7381afb0b9e7d4151a3f76b7dec4199b97304d7b3845788e19126e
shared_secret: b4b4634ad37852e19175ccfb5eca50093291da8f76b86be7511379188bc20d92
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 456be124e7f43803de5f734ea016455d68164a7f054c003f4ef49e46f42dd8d0
public_key = b0abba905c1559715f25f720b7b745a52332355154e60577e598c754b6346b335b0195ac305268bae78bb4617807ca4666738ca81515bb041d43a4188003c52ac4ae4b3808d8c755d3e99d00537249d39d4cc02ed9f98ed4106895666c47538f79e30f5104adab1540a1fc58d1a857a1a4611257be37e0327491aa4b543aa6322ef7816a5c9a55eb3bc8604b15540b62c3405b861a84218211c20bc3d35a8a506b0153306fa98b9488a7841d85197c170f84c380098077e42cafdf1913df369f37f3291ec47289710c57f152b74572c23324f83618fd281f5e41976e77097a570a991b3bc623ad6331a1bb34673b1c328319758ed731ca2981b50a5a2cf8c66d31b10e88c95ffc27c3b6aabe8b207e6cb4373464b1b83f4a5a9806449bf7fb622360bf9f098b56729c5738191d57492b377ca8f989a87922a7368d724b07b7e36133620fa0735d60f5be8b51c19ed1655de5108681cb27273d511c643b7867516c2982a74f62e4cb759bb1f5f0808cc90e1baab60365722293bb07841803076504d00e6fbaae853749fc322e3458810ea41d832b35bf05a10e62a4ff8317b506b9af7216c445663c9061cc62914b0b72b5989d7d9c2b761c2fc5a28b5839bee5596c0de25c10a15776447e17770edb666249a2310962152059c5ed5738741a29e899072427891fb53606ab8b5dd06c005d239adb7bc368b10b74508c45c4aca726fe59c7729cc1ad617236e1b75c760e47815df33297c084429ca371c16c5761c9a23ebbcc2cb43ae9734ba9495d5a86a89e75aef50b9e73470d8d9974cf27a961c0cb2c180ff36140818b005f05afaabc86d8b8bf5c2a62f0632ebeca0c9c567514c9311ba6216fb13f1603c77656cced520d977ac75031044c8790d1b4c97dd38b2aa43dd8808a79e406f8e01503db8f7b51cc1e4265ee830461f41cec398251ea60d2c573ec59b4d28b09dc9446bb972f6d134e2e192e987153b39538e1f631bd81b2e65c2c5c68a96d1b78360889efa4c692b7cc374160e8dc485f47a676d77706e047d3e717386bb49cd942e4c05374b3a1cca148535a3ff1085102f4a7077b5f9c7b1a9ed651edb32691037f9388b672a662bc247beed215d51b414d3530c6b0631999663fd7c0e5da7e411c32c506476fd08a09d499ba3c27bbf6a804cc7e8be5c1f3f97d7aac085dbb3bd1076a69db89bc990efe59b00ca943ef8560642176e926af342b48e8002f6d1aa99b58cd013b03e0d285455786b54a4be3c581419730081361c04697b1b2c07df068621213c8ca6554b5982d5a1aaa113ed9343a56101aec68b838a37ef2c8a15d0504c672b278556b40c766c2066ac995caa32676da182545773881545cd58b71d3d7a02a209bc7407f420a830513b9d9d6c93c56571e42c8bf154afa060667a46d13cc542429c9d1a35be012cd3c9abc2bb7484fc89a4a83a20f7c2bb088793dab732ff370cbab614aa851fb77ce176b8f806c4f2e6068235b93d08c39e96badb37a457e8a790b2b8ef00b0b9e941592373fd2caa3ec3477c6c440d0daa755ac0ad2285754ac64b0852086112b0c9794f1657916fc173209a40425afc9b19946c529ca95154f24ca3cda5f9547c429836c377123c6ec000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 925fde875ae198cfea88c4eeb3a0091897e25a793672df1de3f24ab4fd3edb2cad0b07e698f35dc97bfd1d551fcace3282c8c3d8131857d96ee9986da7b79a02ddc6cfc9fb7f2b809a8e5511b1c1256dbab33e7606d8a5fc048b36f6ee53c7f556efadf94494595a549ca260ac9c45bf9962bf406610ca58dc286a9eeccc447a767b6db3ab009f5848558acea4503de747d72d43218babd6f68c091b4581f4e41f2e850047f5f543a02407e7331202b0eac7bed180061bb53f4dd3504ccbd3f298d96b43bbaf8f0c2545be54c59830e1f343ca88bb9c6812c66bfbb59a6d68298985767a73d34fa69b52cea98d95d8305f97c4d4fd643b56c60fe31e3c2ee7e938ac2e4a5da2297e670931c1dea5fcbe9cf118c62a76a461495f10f640fb416ff7bc2478c0e8a1356bb840345f3d43476bc4cd990eb7f7cde7ccb96452d055397ee402be2ce395a29a4f4061ec3d85b99f086341441022435b636028a1a04c5d787abe1c24a5a55653b7063b1cacdaee40ae0de77b4034b9ac0e860a90c8834b352c71e353c02b1f46b135fa68fa7a5c1c719896987d79f3174b8d0b0c28ed64cf9f2907924497e35bf519d519a9199a4dd68025992c6f466604bb2ec3d7b13eba76e4803fb73bb125b83413998ae86691a0b35c0054e1418898f435ab26cc12a12fd4dcfa9e80887af7ebb6c856a7fc010cfcaef9e1c5a4dc24a91a622fb7307521faff0b8e8e966b7b6ae849ccc75d31c8d700a3b6a9c3f646b2a88d1e9391c2ddc6c9ff15db961874c87dd94bf0165cfc8f719806539a8beb8e28350610461b1252872f0f3ac273b3366abd78d9fe8868dca1a5eecb683ab8b50ced8cf4a5ed3b721e0fe6b205fb191985ca745ff5dae0010493f8296b6586e1c96f7f23fcb4ac4dda15eab811107c977aa0a16439b06986a9027640cf7a01051934dfc758215d22c6f06866d5b871dfdb6ed240a73dfde43f7f89c0ce6909b54b0a633a25f7253c10906166f81ae91a1419028d6182c1f277dc7872b824c7a5a22bc7afc02afeaa9ba4c271ee68882397e6cec34a955cfc672f4e6f5ed870a35ebce97f34542cf0a162938c91922230ee3fe9ed9a166a790ccf450b80cb5f483c3c6ae5b2e52e907824b45e69e5ab38226cbd6519de995e1a62a910fd45ed189540e0b4058ff01edbc6ba4eebd58d55c0e33702de299eb53d6518254b8471f282779533eaaef90602e52373be8b519c56a2f6fac0953c0f84135715c5674e45d15804fb94d9e0525ab493aa625fbf73ebdf74f0a1246e1eb0e4e2e261b24ab81d8da6e1770634c747542450cf0a2af23507f8b6766a16dbb2e67b2c94859228b91eec6c59f5a271902b340320412ae947398ad102073f8b9b8c021f81f786622c3483e61f812aa76232e6f9453eae044c5e918e6e4e0e18a78efaf6cb36f7b75929d0036c44edf928d6efe1ddc87b96288c7c624655d302b98865978ed7bc779c800e6113a0484dd225aef29796c8ba300b3f48dd566fd877dfeb5d25f96da5d07e643c5d
shared_secret: d4b9a0f77a52d4f8b9c95951257348d1931725c27eede694ecc09204a931daf7
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: e8ac9e76377d67d84f85a142383e777157805be0d0f679ba89cefdfa61583780
public_key = 038c5d80656805b427d0b9167abb3697444af88a0f3eb48bf658be44f36b01233902291860215084ec7bb3e170e517c65c623ecf4a488f69923f9045ea18334d5c8ee847381b5a8903a6233796b1def36e46d343cd3547f4a757d82c262278432bd555fb5430e7f936affb453ac1a031c70cb1b3a8f3762dbe226461501d13d10052fb621be30b8ce63ce93591979863816397f0d198a6c534b55213d778ae7bb1a20ef1809ec37b08382c43e82b4a758458d7758d23a350538b3e524d27c9074d1cc4e3e1a17a6b06fd71178c5b18803b1c439b9e903a0d63018d2f765fa7426a0684793ea789c30435657b9aed58886cb8788e14426ea0295da18293024eb1a39eb99a20619a3e2db48a93eb90dbf42b84fbcec1f0b9571946b6f150ef5a672686a30e52be2d536bf3664550f60c99a89b81f3c911784d8a371ebea0b97ff50e2af68f822a72e9a76cf473bcc1cb81fe2a03051771b1c91f1e1a444ab6119c0a83b25a434fd598bc767315881aef9cb4d4c51ceadbb3b1a1142e0b87d5826b161233ce253d2adc9a00bd00e3cc21fff09abd919b54e09ba6b505601a358e50593dfa117eb2b8d7458745a25e7c7321cda0c432aa5bb41aab60eb3dc7e03ce4017b245809a534c3dfa49e97f4474689901e814a97fc0892ca04d0c00e3dfc836b36bbf74256e77525a031160fb3bf8ac31502c049d0a264140104c7488e36a46d23a76f4535b5902677cb98a5abec57b9357b0cb3b36b68349b273a2f8396e6c8594b4a32f0aa8a622378b3ca0426f44443942c02162907b2651ac2168fd1279b040192716bb584211df4ba36cb363b8c3adc39b410977ae3cac26c21470426837a43b821f65d8ee1950c87b4765a034aba1a35579f4148b8c2f39949812cf9d850d5e25be7713ce62ba31366737c03ad45f23e9b226d1835c5ab01c081063dc193630d72821cfa2a56d16108c40ffc483177d075b6a7a1bbf5cac7da0834d755acd10b9b9850a7c97d90a1061ce94efa4b0c0707339dbc7f160a45eeec022815a4494334254c08ade388c07c34e3a07e51ea60fdeb9b20b4b9afdc6c3c2b63e872aac9b2a90b798bc2dc8d585c69c1b33c1d51372c583e835b9ed561c218a2968c044051f8a969a7b2db6a7031d20cc9e024bbaab4385a3ae13ca264c25f6c5b4170b5c0da13044664a10f335ae9045bd6319abe139bb2b8b635bb06e2f48427e256a16a0f71f119230a9acfb19f0fe07c71828063f42a844a5c703aab9a844f689944ead511d8c97127d99429fc87ede190e0fa002261494076b7a10496dbe12919f585685733ae780eab3ac168287aae3842cfb637a94483f68170f6a3092d51b82ef10496a6374572a527aa7a7d1a99315953f625842ec0bc8851180b98cbe411453027c9b8a4a07fc3bbe32b897fc09e5e65a0457556a8b28e5b7c8b28db24e5431893953c912c195ca52db5d125c3f595f2ea75a63b6c83c8cbca257824ac60ce16bb5be02b30488974a22a66d37b19531e3cf17b59bb43d738cea25326dbd6355243ceff3caae98446927351ff623260472f8c7a715016ca5480af5cecc001c6b65f41221b16bfa61863e225709775b5e6393e4b71920c0c539c6bc5ec5c609466000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 7c06bbeca8b58423e2ad420ec36064ed42c881e3655668f8865a2d643ecd1a4eecf915b6c64b37c98947f06c3ccc8e00bbd16017c246db88cc83f12c887aaad7db61b4d567c285841689169c3f928f1d178a0ddae50d8c46cfd95258667d6239c300595738defd2e806637ca46baa4c6c7b97f1a9b47d53cba9ffe074f88d104c4971d250d085b1800fcbd91584d8cc48e145fc81438290d74765e7ee8c1605e8048b37b9d22b050791fe008b9b84b7f23b0f49955e32c0eef78d7a3a0b2effe8b37d124e19d4cb6f6914204598a525239d9baa116e1c9c39c47f9f37f965941b2aef8519782c65f3ad3a6509d1e31e7efb67db21911e4edeb1f7e9c37b3f852c81d63a95e4775e3f2a8ff315a214680adf44d290e42ebab8ca95bf471140b9d7e03f5e9f97864289a0ae8c9a105e00409f714e413b69be366303b4a138ed51264ab0e5cca5f6dc9387c6608109e8859893efa3bc7384e9f418468b1078807dadb768e254094039d1b807d67353c8e0b5a03d28b8e41ffa0eb3ce0837a132144597908f7a059a097b79a1bac323757324e907b445d064e25c378d2069e7c5d671036871e4fe36705747635e40c6e835319e3ff81714cacc44515d671b703c5581dc76afca0b881f37c1ffc93f2e4afab1e8ac776ca883f3adf7f9ab99396f7e19541c26342a7d5618958523b81871326c357ad84ccc6d3574d97cbd875524e7b08a102263d80f318a48e510c22126568f76936c904c231700ad042d73137eec741c827a082de4a45d296745c55b8367719dd08b8295e38d8d3894b9f8e2f9b483b266e1fc71d6374353ca7d9ed1c6b73ab5a42f6abff7b2ba8fd484d1ae6928b5ea92ea3577be01dc1e88abcd0886eb771dca4d36e91c45bca4807c89736b7d6a927cf64b22c5f323077f5488f6044976f310b4b99f7d486335dcca60571157ac0e480a4dba79a826b4bac3dcb7327a33b16381eb41e1d39915e91a58750ceb71098ec7f1a2d7e44d4bab75bb7482eec277df206502c497eaa345109a145a4da6bed1900b680ad12fb028d33563bfb204ecf66e6ead587c5fe27f8a2eb0e27471925ea0f35eb9d5e53ef801eba3acaaa7790b105eb6128ace992668181c1d7cf203afdccdfefbac67dbd97cad05d499239df84e4cf7372117932c973957e5c70a8520f822be430758990296877df62069d818768513d14df0568be8e63e123bdde35036dcc69a98197f52dfbaae5e5e0cee4a48c67fdda605dad8a27651625c2b35e81dfcacd2a41a6d17f6d7067a67faf2479b3868673b248270f4a2d8ee26de9c787ce966ecf186c1401ad9d3bbf2c43b1d5de32bdd77f5433f4325427254a13985d733ab0863e62a4f3d484ab3f5d3b88f23049079143b058babffc8367cebdd9d2468d7af782979a3ef12841370da6ef2db03679e6bca0db72166c361adfbfc02234119abaf98d4fea8ddc6e8490c2fb5a1be4806a61bc7b36884cf4631cfd53138a23fdda11e597aed323748314282672473a1819ef2b9488f6744544ad
shared_secret: c9d0cf3edb1172344364afec3615ba98477ce9316f92ca46ca5f42b73553a9f5
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 2fe6b9cf4510f212839e348d671b3345da68a477f57513ce363414e87299a717
public_key = 7dd722a23522b0d8cb522a67d63a75af305c05f3659bc496f1c47e410582a0e58bbba80751bb2f5ab71414051627f46a78f9708e3139f8950b999378df4709a08b9b511982ab1b2cc4d51d177578ef263c8e12752f914733023d9e8068d4fc1aac34106fa72197f6b4e4bb26ab29ab64d7c848f98ef5557ec2b35edea70b67c084193921d8cb52e132a24372be7046aa2af66696007e2e0830df1c7b4396bcc8f27aca46932c463b49db0ed88882f3a45901a4b96ee3b74e78afb8dbae7bc653be895179f208c27c6ecd60c26e54152aecbc13bb5ece39840574c56fb39fd2385c76d62c59a41b3311702d5a99e366467b6c4f6c252a95db32e5096e61d1ba872924d358b346dc099a485c3df72a94e437a82a6cd778888995c473c203e091309ba42511950c19db3acbc5987259bea952b5a549839f197d7bf64ca0772cc1dc89572a0e04690fe651a79ffb3dc07388c30c06711c6b25572bbc83ba868a379d54c6439754bcd67c9b0364ab3790967a062948084ab33a80ac5971fa99830aa7d1e9263e7087af67ab6a83ab34f405dbd72b3fe46e9f2114e26cc6643b6d3adb9de63090394213e72b64ecbb2242266139579ea9cab2e51868ef82ababaac38e7ca0b9554d665365dd8b0b58f3020cc9218b866955f54d9f7b9af9634ab995a0b5e234fcc78cd1594e1cb8a845ca0cdbc82e3fbb35414c53423b76875ab267a702d51710149061e7655a0168695053aa61b990fa9439883640e7600345033ca90678925b1d632962deaa0ef5642b870610be3387eda90cf608254dc2b000c06632331680e12e9b277597d07633a31f6445318ac7b9cc1b087cb58bddd30a07ea6e1b1429950b7e7efb1a6b88b037c92cf987c904268ce39cba4bd3c163f5a8bdb9698488152a18b02bc98a83fb6c28a55a018b48979660ad5b42281b8745a4bdcb02cabd16735ab1523916adcb031e34ccbf4c50bf61bb7d562804d4104d3f6ac183f447e6608acb0bc40a34ada4897e9a91c542571877931864b612cec01c88010cbe039d42540835422f5900c944c7025ba3365543536d093a68c27abe1175bc227faa590f8fb8ca9ab1a87366574422379fd8659fe5bb5ec76e179666adebcedc7b54f1aa9388b2907a4ba5c48441ad90499c64a57768631d4a961d88976c816adb897da7715a100c75099cc122f3b1df183385673a3bbc98cbb0ccb0b090b3517993815e3f6b26b984bdda32c11947b2fa5411004c2c41f2a646036b86bba618e72be7f97ec6369af5ca2ab2dc9493d9078a0c8598841385205177c80a3be42a31d1166b02cd1dd2871148033c794242962e8645ae2e4867a3e5c74f71a1d978379ad45f7fa5c70066cbfc4cbfbe05cf23612b2dea551cc52dd90a8468ec771ff071371544e96400e288a82e9c9eefe807d6f4903ac567741abeaec9707533b38dd8c4366bb33cf86f77272478e43a2d8061293332c8d805a4516238d5ad1934a9683655674aa6b6d91610d4c82e966d74c41dfe7ac18e993c22d59b2d286a0b5272cd44988510b9b342405757a25731729e934c58c601f5c311a244a24dbcc772088a20dac4c8410167304fda18445f6c6126b9645d4042d6033419d246968848e1f5000000000000000000000000000000000000000000000000000000
result: pass
ciphertext: 83ea5ed982570cd981b7430de924469d4e2faba68e03261a74f5114ab8c448376cfcd1b9cb3e72bb031bf0fefe772bc40888abc6acffc1d335d46d267acde2cb89cf1b3c67a139796d6a5763805d5edcebb81070b44ffe021b6c2b3c6c3d5dfb6d9e546930223ab0139990c6c5d6257520fe394a3aa30c6a71d47f415ac86b68eb8c83b131a3c5cbf051971fef5ef3bda355d3868e71ed8a0e2c6de8a759bc0c9e760277cc2c04c783d29d1ad3d3385accb85cc88c39bc8348f84dd8c714c5feda50b0770414a333136d6678be6ccbc5df488bafdcade883fbb310c99cc648493aed72680fe1e43c0cf523d3dd06417d29dd97c98ce53089505d36a476c0ae6d89b165c3ff6b2c62ba954fb81ac5782ae648a6802bc057c64fabd3726559ba79de9c144aaa525f6a840ed55abf21b37231c6c4cbb0110fdbcd0004f6f4974ec644c33a8aea34ef4a0a146f7502650c3def5a313d2f309cb428880502d3bdf39196a99bee296f9231d87972efd1159d3cf59bea05f0d0373a0e218ee5e0528e1ac7132440980d1153b9423bb2e099d05fbc8241ec1f316bf0add575a69982f546e99c64457c12ac83951ad46a5f024f6a61c91b7d3853ba1fa41d5a95f6ca811610ba3f32addf011ea4091ef217cdd126ec5e45cc40ec6f1292602b16c02718419646370e5b2c7c55c1128fc5d6c767cc75248b79e2379d40f91a8617e8a3db43c42cabb5cd39a7a7969147f30344c4b03de7034b12d8a1c3639697c97c4483e4191ca0fa81d8659f40e31b899b4ef4610644b1314ab2ef14b8dd8dc0082826fe65dc17211572cb14fa376f1b1784a00033c8dcddc44d6a1128a200eea668b6516ba42585cbb2e2be2a42148120013d0a9378ed7c185071fa8fdc09102164c63a665fd09c08d34104c9abb64e394b2e2a00dd834f7c7f5de16f6c02906ae37acc923dd76e530c78f2143396bfc371d14e6c48bec072b6b4e18eeae967456beb3f897a06eae17de174cf09be1435e691350632c0b1eac69dd66549c1d980fb147fa295ca6f21b5dc398e63a7c4263c75b55c85b4f38fbd7cc0fad84aba90dda1f2c9ca88d88905602096162486dba1ed0a8caa6b897c99e25934152a35fd0d476de09fb211abf36565af3744f3fb737247f5d8f172fbf438ed04422a6b3e17bdfe2cb0f09a1d57f1f1a113a768697f23d61ab288f15abc760feb0f5c5d4d5c0b1c891d3dad6089a3b7e54516b8f9755d38430312cf17b21efeeecbfd2719b62480225b9b3ee8940b1f1784ed5630d152635a1233acdd16e5489a9a15eafa7bec99aff25b18d9cac1e726c9e424773a7083f213cea53dcd310b0037aecbde1d584657f32cf548a6872c6f5a1a3a70d4db29ee3773291c94b00b5a596e1691f7752e246ca0960561cd233ec7d5f54496d34ba65b359a856315f02d16c990cdf3db2051b17bf283fed1b808ac79a9ce8250c806896bf75f2cfe76465c09360aba4c9688acea341fe755363abe41c0cba3ebad00c6c7bcc3f7ce091f87079f60094b92
shared_secret: 4bb6a6b27596869efae3d411c69c593afff99b1a703ee1f4ff3e0e7e9756e75b
-# Rho leads to a matrix with unusally large entries
+# Rho leads to a matrix with unusually large entries
entropy: 86630b4f72820d19e9941784183b3a0d770609becd6fe0dc463cb6edac432d59
public_key = 59b479b444b510d9b6d89b7001b237f4a34c57509f69208c7e6b956144bedc8b2d19b12c1baa725dd106f5418ed943370050808ed2636fa634add059541a7a8c7976b0990e59c20c00343d1c37bc3ab587e312991bb88a74227651b340346c58bbb174ac18c204f37445681bc5905354d834f86016d0921219fb467d829daf24901815666d664b8c4aae307485cb95885b7cb9125a14d4d988d3a42c0816ba7ef14de9b622e08871988b8c02d857626b65065551d5bcc81112384f979cd8d2b9ecb55c6afaa700e92e3ecbb285c01112a19cbdb90b8af135b235914c901e2314902a43c939d065481128f83ac801dc2fa69c912f2b69189736d72414df12646680c9c858a9afaa28b994531960b0f2b82fc6b9c6f10706930786ab5c6b0da61ae813cdb7387c27324499b111c6ca5767056070e608cf421af52cb45a842da82560dd86acf45a7e70245e0b535f7559a9fceb9369c44032c09302438cb4670925c7a831d52f083a7919e575be844d9e6a009957c15e6c5f84f050cc4801561876f9f483ded505b3c77a4a97788358801f012b59d716fed55975f8abd3464420d849d89c16dd2a95c372cf631a93a8897ddda2a038070adc2a97b5538778c0215cea399deb8279b2ade6c5ab84bbc8c6e181c091b7002a4d5f395bb60c817e03966b63ba76e88fb05b79d126ab0975c995b5bb2ae6550af78d80b96af40c9514f945d72b0c9602412242c81b60b2df97999fbbaec0404056195879535041231803aa7cf064b5fdfc8b86344d65eb30e52cc0d5b86947b8051ea93008d789914493b58abbd5395b657560f5823c387574db554118d06b26ba14b9660b4b390f8b828ba8a852870cba24a114a68094cf0168b721af8f0998e599b5db2135a3e9360b5754dd49155eea830f0035c2c116dbc9039cf69034c505ed998f8460a170eb5f09786d902664c8135ad77101d0b802248b6f3165a847b5c989131d7ee3135cbcb48b3cabfd100074c00f2e7bc85d4c84bec8980a6920e6f318a4bc805900b548fc7d98316c1b3c3b49f6c5d90595ff7a7b56465385620544aa3f39114e53581e851849726023d953b5df56b87be98854b253a39297f060449fc1c02725c3442a4ed8624f7f6abf3854cf04166b24c3b5a38358bae933ee4777df09720415314b152efc0b175b664c0c0a3521cac1817314d1e69fe03b351fe211c4c44639622a73a4547ef52d46b033aa52a79182baf49a8808fb259c048a04cc03f8a1038e9112eb30965c797f90c277b3549df4f757526351bd1a100767b4bcfa7489c17cb181b707986b9af85e766aa1f99b08aa2a7bc8a385d294277cb00d705b4ce2583e61c16be2b18445d051d7f0cee51703db3162bdd328cf0b0b24a424bd830c6574091088ab746a291c737e8cd595d1b51f9646c7813a8991f89c168489d1a3b61a82466d98ac9de55b4d5aa020243e638328fedbc93d341e1fdc7eb861bba3783a57c86a7184aaa7d5051b7018f3f18b40b69fd7780ae9609194db70123801729c561e973dff3a7ea5ba9045b24e5fe5bc63ea858c687184a8276612c80ab600cc37699583b9ffa8c5a1b7934f3c12873522dd1c4f976b73121bb79766803d247de1dff18807000000000000000000000000000000000000000000000000000000
result: pass
diff --git a/crypto/obj/objects.txt b/crypto/obj/objects.txt
index 4431f55..1e0cb76 100644
--- a/crypto/obj/objects.txt
+++ b/crypto/obj/objects.txt
@@ -822,7 +822,7 @@
# Documents refer to "internet 7" as "mail". This however leads to ambiguities
# with RFC 2798, Section 9.1.3, where "mail" is defined as the short name for
# rfc822Mailbox. The short name is therefore here left out for a reason.
-# Subclasses of "mail", e.g. "MIME MHS" don't consitute a problem, as
+# Subclasses of "mail", e.g. "MIME MHS" don't constitute a problem, as
# references are realized via long name "Mail" (with capital M).
internet 7 : : Mail
diff --git a/crypto/perlasm/readme b/crypto/perlasm/readme
index 4fb6fa2..78d7d0c 100644
--- a/crypto/perlasm/readme
+++ b/crypto/perlasm/readme
@@ -1,5 +1,5 @@
The perl scripts in this directory are my 'hack' to generate
-multiple different assembler formats via the one origional script.
+multiple different assembler formats via the one original script.
The way to use this library is to start with adding the path to this directory
and then include it.
@@ -35,7 +35,7 @@
&function_begin_B(name,extra) Same as normal function_begin but no pushing.
&function_end(name) Call at end of function.
&function_end_A(name) Standard pop and ret, for use inside functions
-&function_end_B(name) Call at end but with poping or 'ret'.
+&function_end_B(name) Call at end but with popping or 'ret'.
&swtmp(num) Address on stack temp word.
&wparam(num) Parameter number num, that was push
in C convention. This all works over pushes
diff --git a/crypto/rand/fork_detect.cc b/crypto/rand/fork_detect.cc
index 0f6f5c3..9a62f32 100644
--- a/crypto/rand/fork_detect.cc
+++ b/crypto/rand/fork_detect.cc
@@ -187,7 +187,7 @@
// These platforms may fork, but we do not have a mitigation mechanism in
// place. Returning a constant zero value makes BoringSSL assume that address
-// space duplication could have occured on any call entropy must be added to
+// space duplication could have occurred on any call entropy must be added to
// every RAND_bytes call.
uint64_t CRYPTO_get_fork_generation(void) { return 0; }
diff --git a/crypto/rsa/rsa_test.cc b/crypto/rsa/rsa_test.cc
index d7e337b..18a0bad 100644
--- a/crypto/rsa/rsa_test.cc
+++ b/crypto/rsa/rsa_test.cc
@@ -1427,7 +1427,7 @@
}
// This test might be excessively slow on slower CPUs or platforms that do not
-// expect server workloads. It is disabled by default and reenabled on some
+// expect server workloads. It is disabled by default and re-enabled on some
// platforms when running tests standalone via all_tests.go.
//
// Additionally, even when running disabled tests standalone, limit this to
diff --git a/crypto/sha/sha512.cc b/crypto/sha/sha512.cc
index 7b1f3a6..5ea8442 100644
--- a/crypto/sha/sha512.cc
+++ b/crypto/sha/sha512.cc
@@ -80,8 +80,8 @@
}
int SHA512_Final(uint8_t out[SHA512_DIGEST_LENGTH], SHA512_CTX *sha) {
- // Historically this function retured failure if passed NULL, even
- // though other final functions do not.
+ // Historically this function returned failure if passed NULL, even though
+ // other final functions do not.
if (out == nullptr) {
return 0;
}
diff --git a/crypto/stack/stack.cc b/crypto/stack/stack.cc
index 6f0d574..cd94693 100644
--- a/crypto/stack/stack.cc
+++ b/crypto/stack/stack.cc
@@ -360,7 +360,7 @@
// |ptrdiff_t|, a signed type, is the same size as |size_t|, this cannot
// overflow.
assert(idx <= PTRDIFF_MAX);
- static_assert(PTRDIFF_MAX <= (SIZE_MAX - 1) / 2, "2 * idx + 1 may oveflow");
+ static_assert(PTRDIFF_MAX <= (SIZE_MAX - 1) / 2, "2 * idx + 1 may overflow");
return 2 * idx + 1;
}
diff --git a/crypto/test/abi_test.cc b/crypto/test/abi_test.cc
index c3c7393..bc6ba73 100644
--- a/crypto/test/abi_test.cc
+++ b/crypto/test/abi_test.cc
@@ -90,7 +90,7 @@
#if defined(SUPPORTS_UNWIND_TEST)
// We test unwind metadata by running the function under test with the trap flag
// set. This results in |SIGTRAP| and |EXCEPTION_SINGLE_STEP| on Linux and
-// Windows, respectively. We hande these and verify libunwind or the Windows
+// Windows, respectively. We handle these and verify libunwind or the Windows
// unwind APIs unwind successfully.
// IsAncestorStackFrame returns true if |a_sp| is an ancestor stack frame of
@@ -104,7 +104,7 @@
#endif
}
-// Implement some string formatting utilties. Ideally we would use |snprintf|,
+// Implement some string formatting utilities. Ideally we would use |snprintf|,
// but this is called in a signal handler and |snprintf| is not async-signal-
// safe.
diff --git a/crypto/test/asm/trampoline-x86_64.pl b/crypto/test/asm/trampoline-x86_64.pl
index 737299e..784929b 100755
--- a/crypto/test/asm/trampoline-x86_64.pl
+++ b/crypto/test/asm/trampoline-x86_64.pl
@@ -185,7 +185,7 @@
movq $unwind, $unwind_offset(%rsp)
____
# Store our caller's state. This is needed because we modify it ourselves, and
-# also to isolate the test infrastruction from the function under test failing
+# also to isolate the test infrastructure from the function under test failing
# to save some register.
$code .= store_caller_state($caller_state_offset, "%rsp", sub {
my ($off, $reg) = @_;
diff --git a/crypto/test/file_test.h b/crypto/test/file_test.h
index 860f030..6708cea 100644
--- a/crypto/test/file_test.h
+++ b/crypto/test/file_test.h
@@ -77,7 +77,7 @@
// number in any output. |PrintLine| does this automatically.
//
// Each attribute in a test and all instructions applying to it must be
-// consumed. When a test completes, if any attributes or insturctions haven't
+// consumed. When a test completes, if any attributes or instructions haven't
// been processed, the framework reports an error.
class FileTest;
diff --git a/crypto/x509/policy.cc b/crypto/x509/policy.cc
index 489d49b..deb8cf7 100644
--- a/crypto/x509/policy.cc
+++ b/crypto/x509/policy.cc
@@ -262,7 +262,7 @@
}
// This does the same thing as RFC 5280, section 6.1.3, step (d), though in
- // a slighty different order. |level| currently contains
+ // a slightly different order. |level| currently contains
// "expected_policy_set" values of the previous level. See
// |process_policy_mappings| for details.
const int previous_level_has_any_policy = level->has_any_policy;
@@ -348,7 +348,7 @@
// with P1 in |parent_policies|.
//
// This is equivalent to the |X509_POLICY_LEVEL| that would result if the next
-// certificats contained anyPolicy. |process_certificate_policies| will filter
+// certificates contained anyPolicy. |process_certificate_policies| will filter
// this result down to compute the actual level.
static X509_POLICY_LEVEL *process_policy_mappings(const X509 *cert,
X509_POLICY_LEVEL *level,
diff --git a/crypto/x509/v3_utl.cc b/crypto/x509/v3_utl.cc
index bf37f41..015bbca 100644
--- a/crypto/x509/v3_utl.cc
+++ b/crypto/x509/v3_utl.cc
@@ -203,8 +203,8 @@
} else {
// Decoding from decimal scales quadratically in the input length. Bound the
// largest decimal input we accept in the config parser. 8,192 decimal
- // digits allows values up to 27,213 bits. Ths exceeds the largest RSA, DSA,
- // or DH modulus we support, and those are not usefully represented in
+ // digits allows values up to 27,213 bits. This exceeds the largest RSA,
+ // DSA, or DH modulus we support, and those are not usefully represented in
// decimal.
if (strlen(value) > 8192) {
BN_free(bn);
diff --git a/crypto/x509/x509_obj.cc b/crypto/x509/x509_obj.cc
index 36a98fc..10cf9bd 100644
--- a/crypto/x509/x509_obj.cc
+++ b/crypto/x509/x509_obj.cc
@@ -25,7 +25,7 @@
// Limit to ensure we don't overflow: much greater than
-// anything enountered in practice.
+// anything encountered in practice.
#define NAME_ONELINE_MAX (1024 * 1024)
diff --git a/crypto/x509/x509_test.cc b/crypto/x509/x509_test.cc
index f859d21..c6ce62d 100644
--- a/crypto/x509/x509_test.cc
+++ b/crypto/x509/x509_test.cc
@@ -2827,7 +2827,7 @@
ASSERT_TRUE(PEMToDER(&data2, &data2_len, kLeafPEM));
EXPECT_EQ(root->buf, buf.get());
- // Historically, this function tested the interaction betweeen
+ // Historically, this function tested the interaction between
// |X509_parse_from_buffer| and object reuse. We no longer support object
// reuse, so |d2i_X509| will replace |raw| with a new object. However, we
// retain this test to verify that releasing objects from |d2i_X509| works
diff --git a/crypto/x509/x509name.cc b/crypto/x509/x509name.cc
index 0c24246..1625fd8 100644
--- a/crypto/x509/x509name.cc
+++ b/crypto/x509/x509name.cc
@@ -54,8 +54,8 @@
}
CBS cbs;
CBS_init(&cbs, text, text_len);
- // Fail if the UTF-8 encoding constains a 0 byte because this is
- // returned as a C string and callers very often do not check.
+ // Fail if the UTF-8 encoding contains a 0 byte because this is returned as a
+ // C string and callers very often do not check.
if (CBS_contains_zero_byte(&cbs)) {
goto out;
}
@@ -92,7 +92,7 @@
return X509_NAME_get_index_by_OBJ(name, obj, lastpos);
}
-// NOTE: you should be passsing -1, not 0 as lastpos
+// NOTE: you should be passing -1, not 0 as lastpos
int X509_NAME_get_index_by_OBJ(const X509_NAME *name, const ASN1_OBJECT *obj,
int lastpos) {
if (name == nullptr) {
diff --git a/crypto/x509/x_crl.cc b/crypto/x509/x_crl.cc
index 1b78455..1d22ed6 100644
--- a/crypto/x509/x_crl.cc
+++ b/crypto/x509/x_crl.cc
@@ -42,7 +42,7 @@
const ASN1_INTEGER *serial, X509_NAME *issuer);
// The X509_CRL_INFO structure needs a bit of customisation. Since we cache
-// the original encoding the signature wont be affected by reordering of the
+// the original encoding the signature won't be affected by reordering of the
// revoked field.
static int crl_inf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
void *exarg) {
diff --git a/gen/bcm/armv8-mont-apple.S b/gen/bcm/armv8-mont-apple.S
index fadf3e2..f360147 100644
--- a/gen/bcm/armv8-mont-apple.S
+++ b/gen/bcm/armv8-mont-apple.S
@@ -428,7 +428,7 @@
adc x24,x24,x15
adds x24,x24,x16
- sub x14,x3,x5 // rewinded ap
+ sub x14,x3,x5 // rewound ap
adc x25,xzr,xzr // t[14]
add x25,x25,x17
@@ -775,7 +775,7 @@
// to be zero at this point
ldp x6,x7,[x2,#8*0]
sub x27,x3,x1 // done yet?
- sub x16,x3,x5 // rewinded np
+ sub x16,x3,x5 // rewound np
ldp x8,x9,[x2,#8*2]
ldp x10,x11,[x2,#8*4]
ldp x12,x13,[x2,#8*6]
@@ -1115,7 +1115,7 @@
//adc x0,x0,xzr
cbnz x28,Loop_mul4x_1st_tail
- sub x11,x27,x5 // rewinded x1
+ sub x11,x27,x5 // rewound x1
cbz x10,Lmul4x_proceed
ldp x6,x7,[x1,#8*0]
@@ -1257,7 +1257,7 @@
//adc x0,x0,xzr
cbnz x28,Loop_mul4x_tail
- sub x11,x3,x5 // rewinded np?
+ sub x11,x3,x5 // rewound np?
adc x0,x0,xzr
cbz x10,Loop_mul4x_break
diff --git a/gen/bcm/armv8-mont-linux.S b/gen/bcm/armv8-mont-linux.S
index 574647f..760bd88 100644
--- a/gen/bcm/armv8-mont-linux.S
+++ b/gen/bcm/armv8-mont-linux.S
@@ -428,7 +428,7 @@
adc x24,x24,x15
adds x24,x24,x16
- sub x14,x3,x5 // rewinded ap
+ sub x14,x3,x5 // rewound ap
adc x25,xzr,xzr // t[14]
add x25,x25,x17
@@ -775,7 +775,7 @@
// to be zero at this point
ldp x6,x7,[x2,#8*0]
sub x27,x3,x1 // done yet?
- sub x16,x3,x5 // rewinded np
+ sub x16,x3,x5 // rewound np
ldp x8,x9,[x2,#8*2]
ldp x10,x11,[x2,#8*4]
ldp x12,x13,[x2,#8*6]
@@ -1115,7 +1115,7 @@
//adc x0,x0,xzr
cbnz x28,.Loop_mul4x_1st_tail
- sub x11,x27,x5 // rewinded x1
+ sub x11,x27,x5 // rewound x1
cbz x10,.Lmul4x_proceed
ldp x6,x7,[x1,#8*0]
@@ -1257,7 +1257,7 @@
//adc x0,x0,xzr
cbnz x28,.Loop_mul4x_tail
- sub x11,x3,x5 // rewinded np?
+ sub x11,x3,x5 // rewound np?
adc x0,x0,xzr
cbz x10,.Loop_mul4x_break
diff --git a/gen/bcm/armv8-mont-win.S b/gen/bcm/armv8-mont-win.S
index 84f3473..40d7249 100644
--- a/gen/bcm/armv8-mont-win.S
+++ b/gen/bcm/armv8-mont-win.S
@@ -432,7 +432,7 @@
adc x24,x24,x15
adds x24,x24,x16
- sub x14,x3,x5 // rewinded ap
+ sub x14,x3,x5 // rewound ap
adc x25,xzr,xzr // t[14]
add x25,x25,x17
@@ -779,7 +779,7 @@
// to be zero at this point
ldp x6,x7,[x2,#8*0]
sub x27,x3,x1 // done yet?
- sub x16,x3,x5 // rewinded np
+ sub x16,x3,x5 // rewound np
ldp x8,x9,[x2,#8*2]
ldp x10,x11,[x2,#8*4]
ldp x12,x13,[x2,#8*6]
@@ -1121,7 +1121,7 @@
//adc x0,x0,xzr
cbnz x28,Loop_mul4x_1st_tail
- sub x11,x27,x5 // rewinded x1
+ sub x11,x27,x5 // rewound x1
cbz x10,Lmul4x_proceed
ldp x6,x7,[x1,#8*0]
@@ -1263,7 +1263,7 @@
//adc x0,x0,xzr
cbnz x28,Loop_mul4x_tail
- sub x11,x3,x5 // rewinded np?
+ sub x11,x3,x5 // rewound np?
adc x0,x0,xzr
cbz x10,Loop_mul4x_break
diff --git a/gen/crypto/chacha20_poly1305_armv8-apple.S b/gen/crypto/chacha20_poly1305_armv8-apple.S
index 66c538c..73647cf 100644
--- a/gen/crypto/chacha20_poly1305_armv8-apple.S
+++ b/gen/crypto/chacha20_poly1305_armv8-apple.S
@@ -1199,7 +1199,7 @@
subs x4, x4, #1
b.gt Lseal_hash_extra_load
- // Hash in the final padded extra_in blcok
+ // Hash in the final padded extra_in block
mov x11, v20.d[0]
mov x12, v20.d[1]
adds x8, x8, x11
diff --git a/gen/crypto/chacha20_poly1305_armv8-linux.S b/gen/crypto/chacha20_poly1305_armv8-linux.S
index f1f2b67..4971220 100644
--- a/gen/crypto/chacha20_poly1305_armv8-linux.S
+++ b/gen/crypto/chacha20_poly1305_armv8-linux.S
@@ -1199,7 +1199,7 @@
subs x4, x4, #1
b.gt .Lseal_hash_extra_load
- // Hash in the final padded extra_in blcok
+ // Hash in the final padded extra_in block
mov x11, v20.d[0]
mov x12, v20.d[1]
adds x8, x8, x11
diff --git a/gen/crypto/chacha20_poly1305_armv8-win.S b/gen/crypto/chacha20_poly1305_armv8-win.S
index 4c0b967..dac5eee 100644
--- a/gen/crypto/chacha20_poly1305_armv8-win.S
+++ b/gen/crypto/chacha20_poly1305_armv8-win.S
@@ -1203,7 +1203,7 @@
subs x4, x4, #1
b.gt Lseal_hash_extra_load
- // Hash in the final padded extra_in blcok
+ // Hash in the final padded extra_in block
mov x11, v20.d[0]
mov x12, v20.d[1]
adds x8, x8, x11
diff --git a/include/openssl/aead.h b/include/openssl/aead.h
index e9c8fbe..97dd338 100644
--- a/include/openssl/aead.h
+++ b/include/openssl/aead.h
@@ -169,7 +169,7 @@
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm_randnonce(void);
// EVP_aead_aes_128_ccm_bluetooth is AES-128-CCM with M=4 and L=2 (4-byte tags
-// and 13-byte nonces), as decribed in the Bluetooth Core Specification v5.0,
+// and 13-byte nonces), as described in the Bluetooth Core Specification v5.0,
// Volume 6, Part E, Section 1.
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_ccm_bluetooth(void);
diff --git a/include/openssl/asm_base.h b/include/openssl/asm_base.h
index 4fc5dd5..941b482 100644
--- a/include/openssl/asm_base.h
+++ b/include/openssl/asm_base.h
@@ -56,7 +56,7 @@
// https://lpc.events/event/7/contributions/729/attachments/496/903/CET-LPC-2020.pdf
//
// cet.h defines _CET_ENDBR which is used to mark function entry points for IBT.
-// and adds the assembly marker. The value of _CET_ENDBR is made dependant on if
+// and adds the assembly marker. The value of _CET_ENDBR is made dependent on if
// '-fcf-protection' is passed to the compiler. _CET_ENDBR is only required when
// the function is the target of an indirect jump, but BoringSSL chooses to mark
// all assembly entry points because it is easier, and allows BoringSSL's ABI
diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h
index 039594f..dbbefbb 100644
--- a/include/openssl/asn1.h
+++ b/include/openssl/asn1.h
@@ -757,7 +757,7 @@
//
// WARNING: This function affects global state in the library. If two libraries
// in the same address space register information for the same OID, one call
-// will fail. Prefer directly passing the desired parametrs to
+// will fail. Prefer directly passing the desired parameters to
// |ASN1_mbstring_copy| or |ASN1_mbstring_ncopy| instead.
OPENSSL_EXPORT int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize,
unsigned long mask,
@@ -931,7 +931,7 @@
// ASN1_BIT_STRING_set_bit sets bit |n| of |str| to one if |value| is non-zero
// and zero if |value| is zero, resizing |str| as needed. It then truncates
-// trailing zeros in |str| to align with the DER represention for a bit string
+// trailing zeros in |str| to align with the DER representation for a bit string
// with named bits. It returns one on success and zero on error. |n| is indexed
// beginning from zero.
OPENSSL_EXPORT int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *str, int n,
diff --git a/include/openssl/base.h b/include/openssl/base.h
index b302fc4..e8d070c 100644
--- a/include/openssl/base.h
+++ b/include/openssl/base.h
@@ -183,7 +183,7 @@
// C and C++ handle inline functions differently. In C++, an inline function is
// defined in just the header file, potentially emitted in multiple compilation
// units (in cases the compiler did not inline), but each copy must be identical
-// to satsify ODR. In C, a non-static inline must be manually emitted in exactly
+// to satisfy ODR. In C, a non-static inline must be manually emitted in exactly
// one compilation unit with a separate extern inline declaration.
//
// In both languages, exported inline functions referencing file-local symbols
diff --git a/include/openssl/bytestring.h b/include/openssl/bytestring.h
index d5df0b2..6dc5c24 100644
--- a/include/openssl/bytestring.h
+++ b/include/openssl/bytestring.h
@@ -175,7 +175,7 @@
// compiler, the following functions act on tag-length-value elements in the
// serialization itself. Thus the caller is responsible for looping over a
// SEQUENCE, branching on CHOICEs or OPTIONAL fields, checking for trailing
-// data, and handling explict vs. implicit tagging.
+// data, and handling explicit vs. implicit tagging.
//
// Tags are represented as |CBS_ASN1_TAG| values in memory. The upper few bits
// store the class and constructed bit, and the remaining bits store the tag
@@ -645,7 +645,7 @@
// CBB_add_asn1_oid_from_text decodes |len| bytes from |text| as an ASCII OID
// representation, e.g. "1.2.840.113554.4.1.72585", and writes the DER-encoded
// contents to |cbb|. It returns one on success and zero on malloc failure or if
-// |text| was invalid. It does not include the OBJECT IDENTIFER framing, only
+// |text| was invalid. It does not include the OBJECT IDENTIFIER framing, only
// the element's contents.
//
// This function considers OID strings with components which do not fit in a
diff --git a/include/openssl/cms.h b/include/openssl/cms.h
index 6616348a..59700b5 100644
--- a/include/openssl/cms.h
+++ b/include/openssl/cms.h
@@ -39,7 +39,7 @@
DECLARE_STACK_OF(X509)
// CMS_* are flags that can be passed to functions in this library. Their
-// interpretation is specified in the corresponding functinos.
+// interpretation is specified in the corresponding functions.
#define CMS_NOCERTS 0x2
#define CMS_DETACHED 0x40
#define CMS_BINARY 0x80
diff --git a/include/openssl/crypto.h b/include/openssl/crypto.h
index adede95..a22bfa2 100644
--- a/include/openssl/crypto.h
+++ b/include/openssl/crypto.h
@@ -100,7 +100,7 @@
// fips_counter_t denotes specific APIs/algorithms. A counter is maintained for
// each in FIPS mode so that tests can be written to assert that the expected,
-// FIPS functions are being called by a certain peice of code.
+// FIPS functions are being called by a certain piece of code.
enum fips_counter_t {
fips_counter_evp_aes_128_gcm = 0,
fips_counter_evp_aes_256_gcm = 1,
diff --git a/include/openssl/digest.h b/include/openssl/digest.h
index b604aba..a86c189 100644
--- a/include/openssl/digest.h
+++ b/include/openssl/digest.h
@@ -256,7 +256,7 @@
OPENSSL_EXPORT const EVP_MD *EVP_get_digestbyname(const char *);
// EVP_dss1 returns the value of EVP_sha1(). This was provided by OpenSSL to
-// specifiy the original DSA signatures, which were fixed to use SHA-1. Note,
+// specify the original DSA signatures, which were fixed to use SHA-1. Note,
// however, that attempting to sign or verify DSA signatures with the EVP
// interface will always fail.
OPENSSL_EXPORT const EVP_MD *EVP_dss1(void);
diff --git a/include/openssl/ec.h b/include/openssl/ec.h
index 4b60f3b..2479228 100644
--- a/include/openssl/ec.h
+++ b/include/openssl/ec.h
@@ -342,7 +342,7 @@
// EC_GROUP_free releases a reference to |group|, if |group| was created by
// |EC_GROUP_new_curve_GFp|. If |group| is static, it does nothing.
//
-// This function exists for OpenSSL compatibilty, and to manage dynamic
+// This function exists for OpenSSL compatibility, and to manage dynamic
// |EC_GROUP|s constructed by |EC_GROUP_new_curve_GFp|. Callers that do not need
// either may ignore this function.
OPENSSL_EXPORT void EC_GROUP_free(EC_GROUP *group);
@@ -351,7 +351,7 @@
// was created by |EC_GROUP_new_curve_GFp|. If |group| is static, it simply
// returns |group|.
//
-// This function exists for OpenSSL compatibilty, and to manage dynamic
+// This function exists for OpenSSL compatibility, and to manage dynamic
// |EC_GROUP|s constructed by |EC_GROUP_new_curve_GFp|. Callers that do not need
// either may ignore this function.
OPENSSL_EXPORT EC_GROUP *EC_GROUP_dup(const EC_GROUP *group);
diff --git a/include/openssl/err.h b/include/openssl/err.h
index 31a2b86..ee19f70 100644
--- a/include/openssl/err.h
+++ b/include/openssl/err.h
@@ -265,7 +265,7 @@
ERR_NUM_LIBS
};
-// The following reason codes used to denote an error occuring in another
+// The following reason codes used to denote an error occurring in another
// library. They are sometimes used for a stack trace.
#define ERR_R_SYS_LIB ERR_LIB_SYS
#define ERR_R_BN_LIB ERR_LIB_BN
diff --git a/include/openssl/evp.h b/include/openssl/evp.h
index 8477760..135781d 100644
--- a/include/openssl/evp.h
+++ b/include/openssl/evp.h
@@ -110,10 +110,11 @@
#define EVP_PKEY_ML_DSA_87 NID_ML_DSA_87
// EVP_PKEY_id returns the type of |pkey|, which is one of the |EVP_PKEY_*|
-// values above. These type values generally corresond to the algorithm OID, but
-// not the parameters, of a SubjectPublicKeyInfo (RFC 5280) or PrivateKeyInfo
-// (RFC 5208) AlgorithmIdentifier. Algorithm parameters can be inspected with
-// algorithm-specific accessors, e.g. |EVP_PKEY_get_ec_curve_nid|.
+// values above. These type values generally correspond to the algorithm OID,
+// but not the parameters, of a SubjectPublicKeyInfo (RFC 5280) or
+// PrivateKeyInfo (RFC 5208) AlgorithmIdentifier. Algorithm parameters can be
+// inspected with algorithm-specific accessors, e.g.
+// |EVP_PKEY_get_ec_curve_nid|.
OPENSSL_EXPORT int EVP_PKEY_id(const EVP_PKEY *pkey);
@@ -294,7 +295,7 @@
// Prefer |EVP_PKEY_from_subject_public_key_info| instead. This function has
// several pitfalls:
//
-// Callers are expected to handle trailing data retuned from |cbs|, making more
+// Callers are expected to handle trailing data returned from |cbs|, making more
// common cases error-prone.
//
// There is also no way to pass in supported algorithms. This function instead
@@ -331,7 +332,7 @@
// Prefer |EVP_PKEY_from_private_key_info| instead. This function has
// several pitfalls:
//
-// Callers are expected to handle trailing data retuned from |cbs|, making more
+// Callers are expected to handle trailing data returned from |cbs|, making more
// common cases error-prone.
//
// There is also no way to pass in supported algorithms. This function instead
diff --git a/include/openssl/kdf.h b/include/openssl/kdf.h
index 29daa6a..b434e2d 100644
--- a/include/openssl/kdf.h
+++ b/include/openssl/kdf.h
@@ -33,7 +33,8 @@
// |EVP_PKEY_derive_init|.
// EVP_PKEY_HKDEF_MODE_* define "modes" for use with |EVP_PKEY_CTX_hkdf_mode|.
-// The mispelling of "HKDF" as "HKDEF" is intentional for OpenSSL compatibility.
+// The misspelling of "HKDF" as "HKDEF" is intentional for OpenSSL
+// compatibility.
#define EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND 0
#define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1
#define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2
diff --git a/include/openssl/pkcs7.h b/include/openssl/pkcs7.h
index 9990580..63a4457 100644
--- a/include/openssl/pkcs7.h
+++ b/include/openssl/pkcs7.h
@@ -176,8 +176,7 @@
// PKCS7_type_is_enveloped returns zero.
OPENSSL_EXPORT int PKCS7_type_is_enveloped(const PKCS7 *p7);
-// PKCS7_type_is_signed returns one. (We only supporte signed data
-// ContentInfos.)
+// PKCS7_type_is_signed returns one. (We only support signed data ContentInfos.)
OPENSSL_EXPORT int PKCS7_type_is_signed(const PKCS7 *p7);
// PKCS7_type_is_signedAndEnveloped returns zero.
diff --git a/include/openssl/pki/certificate.h b/include/openssl/pki/certificate.h
index 3eeeeef..7c217f3 100644
--- a/include/openssl/pki/certificate.h
+++ b/include/openssl/pki/certificate.h
@@ -38,14 +38,14 @@
// FromDER returns a certificate from an DER-encoded X.509 object in |der|.
// In the event of a failure, it will return no value, and |out_diagnostic|
// may be set to a string of human readable debugging information if
- // information abou the failure is available.
+ // information about the failure is available.
static std::unique_ptr<Certificate> FromDER(
bssl::Span<const uint8_t> der, std::string *out_diagnostic);
// FromPEM returns a certificate from the first CERTIFICATE PEM block in
// |pem|. In the event of a failure, it will return no value, and
// |out_diagnostic| may be set to a string of human readable debugging
- // informtion if informaiton about the failuew is available.
+ // information if information about the failure is available.
static std::unique_ptr<Certificate> FromPEM(
std::string_view pem, std::string *out_diagnostic);
@@ -57,7 +57,7 @@
// may or may not be this, and may check other properties of the certificate.
bool IsSelfIssued() const;
- // Validity specifies the temporal validity of a cerificate, expressed in
+ // Validity specifies the temporal validity of a certificate, expressed in
// POSIX time values of seconds since the POSIX epoch. The certificate is
// valid at POSIX time t in second granularity, where not_before <= t <=
// not_after.
diff --git a/include/openssl/pki/verify_error.h b/include/openssl/pki/verify_error.h
index 22c219d..a01864d 100644
--- a/include/openssl/pki/verify_error.h
+++ b/include/openssl/pki/verify_error.h
@@ -107,7 +107,7 @@
StatusCode Code() const;
// Index returns the certificate in the chain for which the error first
- // occured, starting with 0 for the leaf certificate. Later certificates in
+ // occurred, starting with 0 for the leaf certificate. Later certificates in
// the chain may also exhibit the same error. If the error is not specific to
// a certificate, -1 is returned.
ptrdiff_t Index() const;
diff --git a/include/openssl/span.h b/include/openssl/span.h
index 93de8d5..4f01247 100644
--- a/include/openssl/span.h
+++ b/include/openssl/span.h
@@ -138,7 +138,7 @@
//
// FooMutate(bssl::Span(vec));
//
-// Note that Spans have value type sematics. They are cheap to construct and
+// Note that Spans have value type semantics. They are cheap to construct and
// copy, and should be passed by value whenever a method would otherwise accept
// a reference or pointer to a container or array.
template <typename T, size_t N>
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
index 834c1e3..ff68ba6 100644
--- a/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
@@ -1768,9 +1768,8 @@
//
// This is the same as |SSL_get_peer_cert_chain| except that this function
// always returns the full chain, i.e. the first element of the return value
-// (if any) will be the leaf certificate. In constrast,
-// |SSL_get_peer_cert_chain| returns only the intermediate certificates if the
-// |ssl| is a server.
+// (if any) will be the leaf certificate. In contrast, |SSL_get_peer_cert_chain|
+// returns only the intermediate certificates if the |ssl| is a server.
OPENSSL_EXPORT STACK_OF(X509) *SSL_get_peer_full_cert_chain(const SSL *ssl);
// SSL_get0_peer_certificates returns the peer's certificate chain, or NULL if
@@ -2462,7 +2461,7 @@
// ssl_ticket_aead_ignore_ticket indicates that the ticket should be ignored
// (i.e. is corrupt or otherwise undecryptable).
ssl_ticket_aead_ignore_ticket,
- // ssl_ticket_aead_error indicates that a fatal error occured and the
+ // ssl_ticket_aead_error indicates that a fatal error occurred and the
// handshake should be terminated.
ssl_ticket_aead_error,
};
@@ -5018,7 +5017,7 @@
// ssl_select_cert_retry indicates that the operation could not be
// immediately completed and must be reattempted at a later point.
ssl_select_cert_retry = 0,
- // ssl_select_cert_error indicates that a fatal error occured and the
+ // ssl_select_cert_error indicates that a fatal error occurred and the
// handshake should be terminated.
ssl_select_cert_error = -1,
// ssl_select_cert_disable_ech indicates that, although an encrypted
@@ -6047,7 +6046,7 @@
// dominate other considerations.
ssl_compliance_policy_wpa3_192_202304,
- // ssl_compliance_policy_cnsa_202407 confingures a TLS connection to use:
+ // ssl_compliance_policy_cnsa_202407 configures a TLS connection to use:
// * For TLS 1.3, AES-256-GCM over AES-128-GCM over ChaCha20-Poly1305.
//
// I.e. it ensures that AES-GCM will be used whenever the client supports it.
diff --git a/include/openssl/x509.h b/include/openssl/x509.h
index 0948ae7..926f365 100644
--- a/include/openssl/x509.h
+++ b/include/openssl/x509.h
@@ -185,9 +185,9 @@
// EXFLAG_BCONS indicates the certificate has a basic constraints extension.
#define EXFLAG_BCONS 0x1
-// EXFLAG_KUSAGE indicates the certifcate has a key usage extension.
+// EXFLAG_KUSAGE indicates the certificate has a key usage extension.
#define EXFLAG_KUSAGE 0x2
-// EXFLAG_XKUSAGE indicates the certifcate has an extended key usage extension.
+// EXFLAG_XKUSAGE indicates the certificate has an extended key usage extension.
#define EXFLAG_XKUSAGE 0x4
// EXFLAG_CA indicates the certificate has a basic constraints extension with
// the CA bit set.
@@ -744,7 +744,7 @@
// X509_CRL_get_REVOKED returns the list of revoked certificates in |crl|, or
// NULL if |crl| omits it.
//
-// TOOD(davidben): This function was originally a macro, without clear const
+// TODO(davidben): This function was originally a macro, without clear const
// semantics. It should take a const input and give const output, but the latter
// would break existing callers. For now, we match upstream.
OPENSSL_EXPORT STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl);
@@ -2119,7 +2119,7 @@
// result.
//
// WARNING: This function is not const-correct. The return value should be
-// const. Callers shoudl not mutate the returned object.
+// const. Callers should not mutate the returned object.
OPENSSL_EXPORT void *GENERAL_NAME_get0_value(const GENERAL_NAME *gen,
int *out_type);
@@ -2930,9 +2930,9 @@
OPENSSL_EXPORT int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
X509 *x509, STACK_OF(X509) *chain);
-// X509_verify_cert performs certifice verification with |ctx|, which must have
-// been initialized with |X509_STORE_CTX_init|. It returns one on success and
-// zero on error. On success, |X509_STORE_CTX_get0_chain| or
+// X509_verify_cert performs certificate verification with |ctx|, which must
+// have been initialized with |X509_STORE_CTX_init|. It returns one on success
+// and zero on error. On success, |X509_STORE_CTX_get0_chain| or
// |X509_STORE_CTX_get1_chain| may be used to return the verified certificate
// chain. On error, |X509_STORE_CTX_get_error| may be used to return additional
// error information.
@@ -3045,7 +3045,7 @@
OPENSSL_EXPORT const char *X509_verify_cert_error_string(long err);
// X509_STORE_CTX_get_error_depth returns the depth at which the error returned
-// by |X509_STORE_CTX_get_error| occured. This is zero-indexed integer into the
+// by |X509_STORE_CTX_get_error| occurred. This is zero-indexed integer into the
// certificate chain. Zero indicates the target certificate, one its issuer, and
// so on.
OPENSSL_EXPORT int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx);
@@ -4668,7 +4668,7 @@
// |X509_STORE| that matches |name|. |type| should be one of the |X509_LU_*|
// constants to indicate the type of object. If a match was found, it stores the
// result in |ret| and returns one. Otherwise, it returns zero. If multiple
-// objects match, this function outputs an arbitray one.
+// objects match, this function outputs an arbitrary one.
//
// WARNING: |ret| must be in the empty state, as returned by |X509_OBJECT_new|.
// Otherwise, the object currently in |ret| will be leaked when overwritten.
@@ -4949,7 +4949,7 @@
OPENSSL_EXPORT char *i2s_ASN1_OCTET_STRING(const X509V3_EXT_METHOD *method,
const ASN1_OCTET_STRING *oct);
-// s2i_ASN1_OCTET_STRING decodes |str| as a hexdecimal byte string, with
+// s2i_ASN1_OCTET_STRING decodes |str| as a hexadecimal byte string, with
// optional colon separators between bytes. It returns a newly-allocated
// |ASN1_OCTET_STRING| with the result on success, or NULL on error. |method|
// and |ctx| are ignored.
diff --git a/pki/cert_errors.h b/pki/cert_errors.h
index 2538c6a..57474ac 100644
--- a/pki/cert_errors.h
+++ b/pki/cert_errors.h
@@ -121,7 +121,7 @@
CertError::Severity severity) const;
// Returns true if the error |id| was added to this CertErrors at
- // high serverity.
+ // high severity.
bool ContainsError(CertErrorId id) const;
// Returns true if this contains any errors of the given severity level.
diff --git a/pki/certificate_policies.h b/pki/certificate_policies.h
index ecedbdf..4137e9b 100644
--- a/pki/certificate_policies.h
+++ b/pki/certificate_policies.h
@@ -95,7 +95,7 @@
//
// If a policy qualifier other than User Notice/CPS is present, parsing
// will fail if |fail_parsing_unknown_qualifier_oids| was set to true,
-// otherwise the unrecognized qualifiers wil be skipped and not parsed
+// otherwise the unrecognized qualifiers will be skipped and not parsed
// any further.
//
// Returns true on success. On failure returns false and may add errors to
diff --git a/pki/common_cert_errors.h b/pki/common_cert_errors.h
index 5bbf412..a1486fe 100644
--- a/pki/common_cert_errors.h
+++ b/pki/common_cert_errors.h
@@ -104,8 +104,8 @@
OPENSSL_EXPORT extern const CertErrorId kCertIsNotTrustAnchor;
// The chain is not valid for any policy, and an explicit policy was required.
-// (Either because the relying party requested it during verificaiton, or it was
-// requrested by a PolicyConstraints extension).
+// (Either because the relying party requested it during verification, or it was
+// requested by a PolicyConstraints extension).
OPENSSL_EXPORT extern const CertErrorId kNoValidPolicy;
// The certificate is trying to map to, or from, anyPolicy.
diff --git a/pki/ocsp.cc b/pki/ocsp.cc
index 9f42403..d0f9708 100644
--- a/pki/ocsp.cc
+++ b/pki/ocsp.cc
@@ -309,7 +309,7 @@
return false;
}
- // For compatibilty, we ignore the restriction from X.690 Section 11.5 that
+ // For compatibility, we ignore the restriction from X.690 Section 11.5 that
// DEFAULT values should be omitted for values equal to the default value.
// TODO: Add warning about non-strict parsing.
if (version_present) {
@@ -847,7 +847,7 @@
}
// The SingleResponse matches the certificate, but may be out of date. Out
- // of date responses are noted seperate from responses with mismatched
+ // of date responses are noted separate from responses with mismatched
// serial numbers. If an OCSP responder provides both an up to date
// response and an expired response, the up to date response takes
// precedence (PROVIDED > INVALID_DATE).
diff --git a/pki/parse_certificate.h b/pki/parse_certificate.h
index d2bf9db..0481903 100644
--- a/pki/parse_certificate.h
+++ b/pki/parse_certificate.h
@@ -251,7 +251,7 @@
//
// Parsing guarantees that notBefore (validity_not_before) and notAfter
// (validity_not_after) are valid DER-encoded dates, however it DOES NOT
- // gurantee anything about their values. For instance notAfter could be
+ // guarantee anything about their values. For instance notAfter could be
// before notBefore, or the dates could indicate an expired certificate.
// Consumers are responsible for testing expiration.
der::GeneralizedTime validity_not_before;
diff --git a/pki/path_builder.cc b/pki/path_builder.cc
index 876cc9b..2cff35d 100644
--- a/pki/path_builder.cc
+++ b/pki/path_builder.cc
@@ -92,7 +92,7 @@
// Returns an integer that represents the relative ordering of |issuer| for
// prioritizing certificates in path building based on |issuer|'s
// subjectKeyIdentifier and |target|'s authorityKeyIdentifier. Lower return
-// values indicate higer priority.
+// values indicate higher priority.
KeyIdentifierMatch CalculateKeyIdentifierMatch(
const ParsedCertificate *target, const ParsedCertificate *issuer) {
if (!target->authority_key_identifier()) {
@@ -117,7 +117,7 @@
// Returns an integer that represents the relative ordering of |issuer| based
// on |issuer_trust| and authorityKeyIdentifier matching for prioritizing
-// certificates in path building. Lower return values indicate higer priority.
+// certificates in path building. Lower return values indicate higher priority.
int TrustAndKeyIdentifierMatchToOrder(const ParsedCertificate *target,
const ParsedCertificate *issuer,
const CertificateTrust &issuer_trust) {
diff --git a/pki/string_util.cc b/pki/string_util.cc
index c2b91b9..818c5fc 100644
--- a/pki/string_util.cc
+++ b/pki/string_util.cc
@@ -154,7 +154,7 @@
--chars_written;
}
} else {
- // Non-whitespace chracters are copied straight across.
+ // Non-whitespace characters are copied straight across.
in_whitespace = false;
already_trimmed = false;
result[chars_written++] = *i;
diff --git a/pki/test_helpers.cc b/pki/test_helpers.cc
index 3237614..3d7762f 100644
--- a/pki/test_helpers.cc
+++ b/pki/test_helpers.cc
@@ -145,7 +145,7 @@
// mappings_copy is used to keep track of which mappings have already been
// satisfied (by nulling the |value| field). This is used to track when
- // blocks are mulitply defined.
+ // blocks are multiply defined.
std::vector<PemBlockMapping> mappings_copy(mappings,
mappings + mappings_length);
diff --git a/pki/testdata/ocsp_unittest/annotate_test_data.py b/pki/testdata/ocsp_unittest/annotate_test_data.py
index a64821c..3cb97bf 100755
--- a/pki/testdata/ocsp_unittest/annotate_test_data.py
+++ b/pki/testdata/ocsp_unittest/annotate_test_data.py
@@ -91,7 +91,7 @@
if p.returncode == 0:
stdout_data = stdout_data.strip()
# May contain embedded CERTIFICATE pem blocks. Escape these since
- # CERTIFICATE already has meanining in the test file.
+ # CERTIFICATE already has meaning in the test file.
stdout_data = stdout_data.replace("-----", "~~~~~")
return '$ openssl ocsp -resp_text -respin <([%s])\n%s' % (block_name,
stdout_data)
diff --git a/pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py b/pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py
index bd0ee9b..ebbc77e 100755
--- a/pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py
+++ b/pki/testdata/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py
@@ -16,7 +16,7 @@
"""
A chain with target using authorityKeyIdentifier:issuer and multiple
intermediates with different serial numbers and issuer names, for testing
-path bulding prioritization.
+path building prioritization.
"""
import sys
diff --git a/pki/testdata/path_builder_unittest/key_id_prioritization/generate-certs.py b/pki/testdata/path_builder_unittest/key_id_prioritization/generate-certs.py
index 0776ce3..86d1113 100755
--- a/pki/testdata/path_builder_unittest/key_id_prioritization/generate-certs.py
+++ b/pki/testdata/path_builder_unittest/key_id_prioritization/generate-certs.py
@@ -15,7 +15,7 @@
"""
A chain with multiple intermediates with different subjectKeyIdentifiers and
-notBefore dates, for testing path bulding prioritization.
+notBefore dates, for testing path building prioritization.
"""
import sys
diff --git a/pki/testdata/path_builder_unittest/validity_date_prioritization/generate-certs.py b/pki/testdata/path_builder_unittest/validity_date_prioritization/generate-certs.py
index 1e367fa..5633d79 100755
--- a/pki/testdata/path_builder_unittest/validity_date_prioritization/generate-certs.py
+++ b/pki/testdata/path_builder_unittest/validity_date_prioritization/generate-certs.py
@@ -15,7 +15,7 @@
"""
A chain with four possible intermediates with different notBefore and notAfter
-dates, for testing path bulding prioritization.
+dates, for testing path building prioritization.
"""
import sys
diff --git a/pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/README.md b/pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/README.md
index dd4090d..f17620e 100644
--- a/pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/README.md
+++ b/pki/testdata/verify_certificate_chain_unittest/intermediate-invalid-spki/README.md
@@ -1,4 +1,4 @@
-This test verifies behavior when a certificate has an unparseable/unsupported
+This test verifies behavior when a certificate has an unparsable/unsupported
SPKI. It should be handled equivalently to a certificate with a failed
signature verification: further processing should be shortcircuited.
The certificate chain has 2 problems:
diff --git a/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem b/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem
index 859b15a..12f8fb1 100644
--- a/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem
+++ b/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/chain.pem
@@ -1,7 +1,7 @@
[Created by: generate-chains.py]
Certificate chain where the intermediate has a policies extension marked as
-critical, and contains an unknown policy qualifer (1.2.3.4).
+critical, and contains an unknown policy qualifier (1.2.3.4).
Certificate:
Data:
diff --git a/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py b/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py
index 501868d..db4c4c2 100755
--- a/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py
+++ b/pki/testdata/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py
@@ -14,7 +14,7 @@
# limitations under the License.
"""Certificate chain where the intermediate has a policies extension marked as
-critical, and contains an unknown policy qualifer (1.2.3.4)."""
+critical, and contains an unknown policy qualifier (1.2.3.4)."""
import sys
sys.path += ['../..']
@@ -25,7 +25,7 @@
root = gencerts.create_self_signed_root_certificate('Root')
# Intermediate that has a critical policies extension containing an unknown
-# policy qualifer.
+# policy qualifier.
intermediate = gencerts.create_intermediate_certificate('Intermediate', root)
intermediate.get_extensions().add_property(
'2.5.29.32', ('critical,DER:30:13:30:11:06:02:2a:03:30:0b:30:09:06:03:'
diff --git a/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem b/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem
index 8d1c2ff..ae4fec6 100644
--- a/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem
+++ b/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/chain.pem
@@ -1,7 +1,7 @@
[Created by: generate-chains.py]
Certificate chain where the intermediate has a policies extension (not
-marked as critical) which contains an unknown policy qualifer (1.2.3.4).
+marked as critical) which contains an unknown policy qualifier (1.2.3.4).
Certificate:
Data:
diff --git a/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py b/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py
index 04eb6fa..e0fb522 100755
--- a/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py
+++ b/pki/testdata/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py
@@ -14,7 +14,7 @@
# limitations under the License.
"""Certificate chain where the intermediate has a policies extension (not
-marked as critical) which contains an unknown policy qualifer (1.2.3.4)."""
+marked as critical) which contains an unknown policy qualifier (1.2.3.4)."""
import sys
sys.path += ['../..']
@@ -25,7 +25,7 @@
root = gencerts.create_self_signed_root_certificate('Root')
# Intermediate that has a non-critical policies extension containing an unknown
-# policy qualifer.
+# policy qualifier.
intermediate = gencerts.create_intermediate_certificate('Intermediate', root)
intermediate.get_extensions().add_property(
'2.5.29.32', ('DER:30:13:30:11:06:02:2a:03:30:0b:30:09:06:03:'
diff --git a/pki/verify_certificate_chain.cc b/pki/verify_certificate_chain.cc
index 9bbad95..0134ae2 100644
--- a/pki/verify_certificate_chain.cc
+++ b/pki/verify_certificate_chain.cc
@@ -784,7 +784,7 @@
const std::set<der::Input> &user_initial_policy_set,
bool allow_precertificate, CertErrors *errors);
- // Enforces trust anchor constraints compatibile with RFC 5937.
+ // Enforces trust anchor constraints compatible with RFC 5937.
//
// Note that the anchor constraints are encoded via the attached certificate
// itself.
@@ -875,7 +875,7 @@
// * working_public_key_parameters
//
// They are combined for simplicity since the signature verification takes an
- // EVP_PKEY, and the parameter inheritence is not applicable for the supported
+ // EVP_PKEY, and the parameter inheritance is not applicable for the supported
// key types. |working_public_key_| may be null if parsing failed.
//
// An approximate explanation of |working_public_key_| is this description
diff --git a/rust/bssl-crypto/src/cipher/mod.rs b/rust/bssl-crypto/src/cipher/mod.rs
index ac797cd..c628b92 100644
--- a/rust/bssl-crypto/src/cipher/mod.rs
+++ b/rust/bssl-crypto/src/cipher/mod.rs
@@ -182,7 +182,7 @@
}
fn apply_keystream_in_place(&mut self, buffer: &mut [u8]) -> Result<(), CipherError> {
- // WARNING: This is not safe to re-use for the CBC mode of operation since it is applying
+ // WARNING: This is not safe to reuse for the CBC mode of operation since it is applying
// the key stream in-place.
assert_eq!(
self.cipher_mode(),
diff --git a/rust/bssl-crypto/src/ec.rs b/rust/bssl-crypto/src/ec.rs
index 8298253..987c27b 100644
--- a/rust/bssl-crypto/src/ec.rs
+++ b/rust/bssl-crypto/src/ec.rs
@@ -108,7 +108,7 @@
Self { group, point }
}
- /// Construct a point by multipling the curve's base point by the given
+ /// Construct a point by multiplying the curve's base point by the given
/// scalar.
///
/// Safety: `scalar` must be a valid pointer.
diff --git a/rust/bssl-crypto/src/hkdf.rs b/rust/bssl-crypto/src/hkdf.rs
index 968e644..fd740b8 100644
--- a/rust/bssl-crypto/src/hkdf.rs
+++ b/rust/bssl-crypto/src/hkdf.rs
@@ -244,7 +244,7 @@
info.len(),
);
// The output length is known to be within bounds so the only other
- // possibily is an allocation failure, which we don't attempt to
+ // possibility is an allocation failure, which we don't attempt to
// handle.
assert_eq!(result, 1);
})
diff --git a/rust/bssl-sys/src/lib.rs b/rust/bssl-sys/src/lib.rs
index a55bdff..a1f79db 100644
--- a/rust/bssl-sys/src/lib.rs
+++ b/rust/bssl-sys/src/lib.rs
@@ -2,7 +2,7 @@
// unnecessary_transmutes, needed to work around a Rust bug, is not available in
// older Rusts. Stable lacks any way to condition code on Rust version, so the
-// workaroud for a Rust bug below needs this additional Rust workaround.
+// workaround for a Rust bug below needs this additional Rust workaround.
#![allow(unknown_lints)]
#![allow(non_upper_case_globals)]
diff --git a/ssl/extensions.cc b/ssl/extensions.cc
index 51e8e37..c5f9068 100644
--- a/ssl/extensions.cc
+++ b/ssl/extensions.cc
@@ -210,7 +210,7 @@
//
// However, in the interests of compatibility, we will skip ECDH if the
// client didn't send an extension because we can't be sure that they'll
- // support our favoured group. Thus we do not special-case an emtpy
+ // support our favoured group. Thus we do not special-case an empty
// |peer_supported_group_list|.
Span<const uint16_t> groups = hs->config->supported_group_list;
@@ -440,7 +440,7 @@
// is additionally passed two output |CBB|s. If the extension is the same
// independent of the value of |type|, the callback may write to
// |out_compressible| instead of |out|. When serializing the ClientHelloInner,
-// all compressible extensions will be made continguous and replaced with
+// all compressible extensions will be made contiguous and replaced with
// ech_outer_extensions when encrypted. When serializing the ClientHelloOuter
// or not offering ECH, |out| will be equal to |out_compressible|, so writing to
// |out_compressible| still works.
@@ -3793,7 +3793,7 @@
// ClientHellos concurrently, to handle compression. Uncompressed extensions
// are written to |extensions| and copied to |extensions_encoded|. Compressed
// extensions are buffered in |compressed| and written to the end. (ECH can
- // only compress continguous extensions.)
+ // only compress contiguous extensions.)
SSL *const ssl = hs->ssl;
bssl::ScopedCBB compressed, outer_extensions;
CBB extensions, extensions_encoded;
diff --git a/ssl/handoff.cc b/ssl/handoff.cc
index f318b14..8dfc5f9 100644
--- a/ssl/handoff.cc
+++ b/ssl/handoff.cc
@@ -117,7 +117,7 @@
}
// apply_remote_features reads a list of supported features from |in| and
-// (possibly) reconfigures |ssl| to disallow the negotation of features whose
+// (possibly) reconfigures |ssl| to disallow the negotiation of features whose
// support has not been indicated. (This prevents the the handshake from
// committing to features that are not supported on the handoff/handback side.)
static bool apply_remote_features(SSL *ssl, CBS *in) {
diff --git a/ssl/internal.h b/ssl/internal.h
index e4cc29c..a69505b 100644
--- a/ssl/internal.h
+++ b/ssl/internal.h
@@ -3667,7 +3667,7 @@
// fresh ticket should be sent, but the given ticket cannot be used.
// |ssl_ticket_aead_retry|: the ticket could not be immediately decrypted.
// Retry later.
-// |ssl_ticket_aead_error|: an error occured that is fatal to the connection.
+// |ssl_ticket_aead_error|: an error occurred that is fatal to the connection.
enum ssl_ticket_aead_result_t ssl_process_ticket(
SSL_HANDSHAKE *hs, UniquePtr<SSL_SESSION> *out_session,
bool *out_renew_ticket, Span<const uint8_t> ticket,
@@ -3696,7 +3696,7 @@
// ssl_can_write returns whether |ssl| is allowed to write.
bool ssl_can_write(const SSL *ssl);
-// ssl_can_read returns wheter |ssl| is allowed to read.
+// ssl_can_read returns whether |ssl| is allowed to read.
bool ssl_can_read(const SSL *ssl);
OPENSSL_timeval ssl_ctx_get_current_time(const SSL_CTX *ctx);
@@ -3743,12 +3743,12 @@
// conf_max_version is the maximum acceptable protocol version configured by
// |SSL_CTX_set_max_proto_version|. Note this version is normalized in DTLS
- // and is further constrainted by |SSL_OP_NO_*|.
+ // and is further constrained by |SSL_OP_NO_*|.
uint16_t conf_max_version = 0;
// conf_min_version is the minimum acceptable protocol version configured by
// |SSL_CTX_set_min_proto_version|. Note this version is normalized in DTLS
- // and is further constrainted by |SSL_OP_NO_*|.
+ // and is further constrained by |SSL_OP_NO_*|.
uint16_t conf_min_version = 0;
// num_tickets is the number of tickets to send immediately after the TLS 1.3
diff --git a/ssl/ssl_cipher.cc b/ssl/ssl_cipher.cc
index 1e19eef..010e2ae 100644
--- a/ssl/ssl_cipher.cc
+++ b/ssl/ssl_cipher.cc
@@ -939,7 +939,7 @@
// enables deprecated ciphers, deprecated ciphers are included. This
// is slightly different from the bitmasks in that adding aliases
// can increase the set of matched ciphers. This is so that an alias
- // like "RSA" will only specifiy AES-based RSA ciphers, but
+ // like "RSA" will only specify AES-based RSA ciphers, but
// "RSA+3DES" will still specify 3DES.
alias.include_deprecated |= kCipherAliases[j].include_deprecated;
diff --git a/ssl/ssl_privkey.cc b/ssl/ssl_privkey.cc
index f0fa81a..2346aa4 100644
--- a/ssl/ssl_privkey.cc
+++ b/ssl/ssl_privkey.cc
@@ -856,7 +856,7 @@
buf[buf_used++] = c;
} else {
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SIGNATURE_ALGORITHM);
- ERR_add_error_dataf("invalid character 0x%02x at offest %zu", c,
+ ERR_add_error_dataf("invalid character 0x%02x at offset %zu", c,
offset);
return false;
}
diff --git a/ssl/ssl_test.cc b/ssl/ssl_test.cc
index 8279f75..779a2c3 100644
--- a/ssl/ssl_test.cc
+++ b/ssl/ssl_test.cc
@@ -425,7 +425,7 @@
},
false,
},
- // Although alises like "RSA" do not match 3DES when adding ciphers, they do
+ // Although aliases like "RSA" do not match 3DES when adding ciphers, they do
// match it when removing ciphers.
{
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:RSA:RSA+3DES:!RSA",
@@ -4286,7 +4286,7 @@
g_current_time.tv_sec = new_start_time + timeout + 1;
TRACED_CALL(ExpectSessionReused(client_ctx_.get(), server_ctx_.get(),
new_session.get(),
- false /* expect session ot reused */));
+ false /* expect session not reused */));
// Renew the session until it begins just past the auth timeout.
time_t auth_end_time = kStartTime + SSL_DEFAULT_SESSION_AUTH_TIMEOUT;
@@ -4309,7 +4309,7 @@
g_current_time.tv_sec = auth_end_time + 1;
TRACED_CALL(ExpectSessionReused(client_ctx_.get(), server_ctx_.get(),
new_session.get(),
- false /* expect session ot reused */));
+ false /* expect session not reused */));
} else {
// The new session is usable just before the old expiration.
g_current_time.tv_sec = kStartTime + timeout - 1;
@@ -5152,8 +5152,8 @@
}
TEST(SSLTest, AddChainCertHack) {
- // Ensure that we don't accidently break the hack that we have in place to
- // keep curl and serf happy when they use an |X509| even after transfering
+ // Ensure that we don't accidentally break the hack that we have in place to
+ // keep curl and serf happy when they use an |X509| even after transferring
// ownership.
bssl::UniquePtr<SSL_CTX> ctx(SSL_CTX_new(TLS_method()));
@@ -6823,8 +6823,8 @@
}
TEST(SSLTest, ZeroSizedWiteFlushesHandshakeMessages) {
- // If there are pending handshake mesages, an |SSL_write| of zero bytes should
- // flush them.
+ // If there are pending handshake messages, an |SSL_write| of zero bytes
+ // should flush them.
bssl::UniquePtr<SSL_CTX> server_ctx(
CreateContextWithTestCertificate(TLS_method()));
ASSERT_TRUE(server_ctx);
diff --git a/ssl/ssl_versions.cc b/ssl/ssl_versions.cc
index 1a772f3..278504b 100644
--- a/ssl/ssl_versions.cc
+++ b/ssl/ssl_versions.cc
@@ -211,7 +211,7 @@
// To account for both of these, OpenSSL interprets the client-side bitmask
// as a min/max range by picking the lowest contiguous non-empty range of
// enabled protocols. Note that this means it is impossible to set a maximum
- // version of the higest supported TLS version in a future-proof way.
+ // version of the highest supported TLS version in a future-proof way.
bool any_enabled = false;
for (size_t i = 0; i < std::size(kProtocolVersions); i++) {
// Only look at the versions already enabled.
diff --git a/ssl/ssl_x509.cc b/ssl/ssl_x509.cc
index eb749e4..3edd09f 100644
--- a/ssl/ssl_x509.cc
+++ b/ssl/ssl_x509.cc
@@ -72,7 +72,7 @@
// ssl_cert_set1_chain sets elements 1.. of |cert->chain| to the serialised
// forms of elements of |chain|. It returns one on success or zero on error, in
-// which case no change to |cert->chain| is made. It preverses the existing
+// which case no change to |cert->chain| is made. It preserves the existing
// leaf from |cert->chain|, if any.
static bool ssl_cert_set1_chain(CERT *cert, STACK_OF(X509) *chain) {
cert->legacy_credential->ClearIntermediateCerts();
diff --git a/ssl/test/bssl_shim.cc b/ssl/test/bssl_shim.cc
index 608f9b2..0eba60d 100644
--- a/ssl/test/bssl_shim.cc
+++ b/ssl/test/bssl_shim.cc
@@ -874,7 +874,7 @@
return false;
}
- // Before reseting, early state should still be available.
+ // Before resetting, early state should still be available.
if (!SSL_in_early_data(ssl.get()) ||
!CheckHandshakeProperties(ssl.get(), is_resume, config)) {
fprintf(stderr, "SSL_in_early_data returned false before reset.\n");
@@ -882,8 +882,8 @@
}
// Client pre- and post-0-RTT reject states are considered logically
- // different connections with different test expections. Check that the test
- // did not mistakenly configure reason expectations on the wrong one.
+ // different connections with different test expectations. Check that the
+ // test did not mistakenly configure reason expectations on the wrong one.
if (!config->expect_early_data_reason.empty()) {
fprintf(stderr,
"Test error: client reject -expect-early-data-reason flags "
@@ -895,8 +895,8 @@
SSL_reset_early_data_reject(ssl.get());
GetTestState(ssl.get())->cert_verified = false;
- // After reseting, the socket should report it is no longer in an early data
- // state.
+ // After resetting, the socket should report it is no longer in an early
+ // data state.
if (SSL_in_early_data(ssl.get())) {
fprintf(stderr, "SSL_in_early_data returned true after reset.\n");
return false;
@@ -1066,7 +1066,7 @@
}
// Reset the state to assert later that the callback isn't called in
- // renegotations.
+ // renegotiations.
test_state->got_new_session = false;
}
diff --git a/ssl/test/fuzzer_tags.h b/ssl/test/fuzzer_tags.h
index ca07631..007b601 100644
--- a/ssl/test/fuzzer_tags.h
+++ b/ssl/test/fuzzer_tags.h
@@ -42,7 +42,7 @@
// kHandoffTag is followed by the output of |SSL_serialize_handoff|.
static const uint16_t kHandoffTag = 3;
-// kHandbackTag is followed by te output of |SSL_serialize_handback|.
+// kHandbackTag is followed by the output of |SSL_serialize_handback|.
static const uint16_t kHandbackTag = 4;
// kHintsTag is followed by the output of |SSL_serialize_handshake_hints|.
diff --git a/ssl/test/runner/common.go b/ssl/test/runner/common.go
index 4232de8..7dbde72 100644
--- a/ssl/test/runner/common.go
+++ b/ssl/test/runner/common.go
@@ -697,7 +697,7 @@
AvailableTrustAnchors [][]byte
// ResumptionAcrossNames specifies whether session tickets issued by the TLS
- // server should be marked as compatable with cross-name resumption.
+ // server should be marked as compatible with cross-name resumption.
ResumptionAcrossNames bool
// Bugs specifies optional misbehaviour to be used for testing other
@@ -899,7 +899,7 @@
PartialNewSessionTicketWithServerHelloDone bool
// PartialNewSessionTicketWithServerHelloDone, if true, causes the TLS 1.2
- // server to send part of the Finshed in the same record as ServerHelloDone.
+ // server to send part of the Finished in the same record as ServerHelloDone.
PartialFinishedWithServerHelloDone bool
// PartialServerHelloWithHelloRetryRequest, if true, causes the TLS 1.3
@@ -967,7 +967,7 @@
SendSupportedVersions []uint16
// NegotiateVersion, if non-zero, causes the server to negotiate the
- // specifed wire version rather than the version supported by either
+ // specified wire version rather than the version supported by either
// peer.
NegotiateVersion uint16
@@ -1506,7 +1506,7 @@
SendLargeRecords bool
// NegotiateALPNAndNPN, if true, causes the server to negotiate both
- // ALPN and NPN in the same connetion.
+ // ALPN and NPN in the same connection.
NegotiateALPNAndNPN bool
// SendALPN, if non-empty, causes the server to send the specified
@@ -1882,7 +1882,7 @@
InvalidChannelIDSignature bool
// AlwaysNegotiateChannelID, if true, causes the server to negotiate Channel
- // ID, even whenn the client does not offer it.
+ // ID, even when the client does not offer it.
AlwaysNegotiateChannelID bool
// ExpectGREASE, if true, causes messages without GREASE values to be
diff --git a/ssl/test/runner/conn.go b/ssl/test/runner/conn.go
index a0a8f09..df64010 100644
--- a/ssl/test/runner/conn.go
+++ b/ssl/test/runner/conn.go
@@ -196,7 +196,7 @@
return c.conn.SetReadDeadline(t)
}
-// SetWriteDeadline sets the write deadline on the underlying conneciton.
+// SetWriteDeadline sets the write deadline on the underlying connection.
// A zero value for t means Write will not time out.
// After a Write has timed out, the TLS state is corrupt and all future writes will return the same error.
func (c *Conn) SetWriteDeadline(t time.Time) error {
diff --git a/ssl/test/runner/curve_tests.go b/ssl/test/runner/curve_tests.go
index 3ccf16a..8e7b0a4 100644
--- a/ssl/test/runner/curve_tests.go
+++ b/ssl/test/runner/curve_tests.go
@@ -370,7 +370,7 @@
resumeSession: true,
})
- // TLS 1.3 allows resuming at a differet curve. If this happens, the new
+ // TLS 1.3 allows resuming at a different curve. If this happens, the new
// one should be reported.
testCases = append(testCases, testCase{
name: "CurveID-Resume-Client-TLS13",
diff --git a/ssl/test/runner/dtls_tests.go b/ssl/test/runner/dtls_tests.go
index 8ad208d..b708dba 100644
--- a/ssl/test/runner/dtls_tests.go
+++ b/ssl/test/runner/dtls_tests.go
@@ -175,7 +175,7 @@
ackFlightBasic := handleNewSessionTicket(func(c *DTLSController, prev, received []DTLSMessage, records []DTLSRecordNumberInfo) {
if vers.version >= VersionTLS13 {
// In DTLS 1.3, final flights (either handshake or post-handshake)
- // are retransmited until ACKed. Exercise every timeout but
+ // are retransmitted until ACKed. Exercise every timeout but
// the last one (which would fail the connection).
for _, t := range useTimeouts[:len(useTimeouts)-1] {
c.ExpectNextTimeout(t)
diff --git a/ssl/test/runner/ech_tests.go b/ssl/test/runner/ech_tests.go
index e91f405..2cd3c10 100644
--- a/ssl/test/runner/ech_tests.go
+++ b/ssl/test/runner/ech_tests.go
@@ -1805,7 +1805,7 @@
shouldFail: true,
// Ensure the client does not send application data at the False
// Start point. EOF comes from the client closing the connection
- // in response ot the alert.
+ // in response to the alert.
expectedLocalError: "tls: peer did not false start: EOF",
// Ensures the client picks up the alert before reporting an
// authenticated |SSL_R_ECH_REJECTED|.
diff --git a/ssl/test/runner/extension_tests.go b/ssl/test/runner/extension_tests.go
index da5d3c2..d6adb77 100644
--- a/ssl/test/runner/extension_tests.go
+++ b/ssl/test/runner/extension_tests.go
@@ -1781,7 +1781,7 @@
differentSCTList = append(differentSCTList, testSCTList...)
differentSCTList[len(differentSCTList)-1] ^= 1
- // The SCT extension did not specify that it must only be sent on the inital handshake as it
+ // The SCT extension did not specify that it must only be sent on the initial handshake as it
// should have, so test that we tolerate but ignore it. This is only an issue pre-1.3, since
// SCTs are sent in the CertificateEntry message in 1.3, whereas they were previously sent
// in an extension in the ServerHello pre-1.3.
diff --git a/ssl/test/runner/handshake_messages.go b/ssl/test/runner/handshake_messages.go
index d9221e8..d5097f3 100644
--- a/ssl/test/runner/handshake_messages.go
+++ b/ssl/test/runner/handshake_messages.go
@@ -690,7 +690,7 @@
for _, extID := range m.outerExtensions {
// m.outerExtensions may intentionally contain duplicates to test the
// server's reaction. If m.reorderOuterExtensionsWithoutCompressing
- // is set, we are targetting the second ClientHello and wish to send a
+ // is set, we are targeting the second ClientHello and wish to send a
// valid first ClientHello. In that case, deduplicate so the error
// only appears later.
if _, written := extsWritten[extID]; m.reorderOuterExtensionsWithoutCompressing && written {
diff --git a/ssl/test/runner/hint_mismatch_tests.go b/ssl/test/runner/hint_mismatch_tests.go
index 8a36c14..090b41a 100644
--- a/ssl/test/runner/hint_mismatch_tests.go
+++ b/ssl/test/runner/hint_mismatch_tests.go
@@ -441,7 +441,7 @@
"-install-cert-compression-algs",
},
expectations: connectionExpectations{
- // The shim's configuration should take precendence.
+ // The shim's configuration should take precedence.
peerCertificate: rsaCertificate.WithOCSP(testOCSPResponse),
},
})
diff --git a/ssl/test/runner/pake_tests.go b/ssl/test/runner/pake_tests.go
index 677a3a4..a2b89bd 100644
--- a/ssl/test/runner/pake_tests.go
+++ b/ssl/test/runner/pake_tests.go
@@ -509,7 +509,7 @@
// Check that the ClientHello does not offer a session, even
// though one was configured.
ExpectNoTLS13PSK: true,
- // Respond with an unsolicted PSK extension in ServerHello, to
+ // Respond with an unsolicited PSK extension in ServerHello, to
// check that the client rejects it.
AlwaysSelectPSKIdentity: true,
},
diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index d9a863a..57f9cc4 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -1389,7 +1389,7 @@
}
// not specifying a canonical error will have the same effect as -loose-errors being true
- // since the emptry string with match all error substrings.
+ // since the empty string with match all error substrings.
return []string{canonical}
}
diff --git a/third_party/fiat/README.md b/third_party/fiat/README.md
index a4cbb8f..d83952d 100644
--- a/third_party/fiat/README.md
+++ b/third_party/fiat/README.md
@@ -25,7 +25,7 @@
# Bedrock
Routines for which assembly-level optimization is not necessary are written in
-[Bedrock2](https://github.com/mit-plv/bedrock2) and tranlated to C. The file
+[Bedrock2](https://github.com/mit-plv/bedrock2) and translated to C. The file
`bedrock_unverified_platform.c.inc` provides the platform functionality code
thus translated expects.
diff --git a/third_party/fiat/curve25519_64_adx.h b/third_party/fiat/curve25519_64_adx.h
index b902612..4436ef2 100644
--- a/third_party/fiat/curve25519_64_adx.h
+++ b/third_party/fiat/curve25519_64_adx.h
@@ -402,10 +402,10 @@
out2[3] = x8;
}
-// The following functions are adaped from crypto/curve25519/curve25519.c
+// The following functions are adapted from crypto/curve25519/curve25519.c
// It would be desirable to share the code, but with the current field
// implementations both 4-limb and 5-limb versions of the curve-level code need
-// to be included in builds targetting an unknown variant of x86_64.
+// to be included in builds targeting an unknown variant of x86_64.
__attribute__((target("adx,bmi2")))
static void fe4_invert(fe4 out, const fe4 z) {
diff --git a/tool/digest.cc b/tool/digest.cc
index 008e8f5..c13d61a 100644
--- a/tool/digest.cc
+++ b/tool/digest.cc
@@ -326,7 +326,7 @@
return ok;
}
-// DigestSum acts like the coreutils *sum utilites, with the given hash
+// DigestSum acts like the coreutils *sum utilities, with the given hash
// function.
static bool DigestSum(const EVP_MD *md,
const std::vector<std::string> &args) {
@@ -359,7 +359,7 @@
switch (arg[i]) {
case 'b':
case 't':
- // Binary/text mode – irrelevent, even on Windows.
+ // Binary/text mode – irrelevant, even on Windows.
break;
case 'c':
check_mode = true;
@@ -374,7 +374,7 @@
}
}
} else if (arg == "--binary" || arg == "--text") {
- // Binary/text mode – irrelevent, even on Windows.
+ // Binary/text mode – irrelevant, even on Windows.
} else if (arg == "--check") {
check_mode = true;
} else if (arg == "--quiet") {
diff --git a/util/convert_comments.go b/util/convert_comments.go
index 3ea6645..a34b016 100644
--- a/util/convert_comments.go
+++ b/util/convert_comments.go
@@ -118,7 +118,7 @@
var inComment bool
// comment is the currently buffered multi-line comment to convert. If
// |inComment| is true and it is nil, the current multi-line comment is
- // not convertable and we copy lines to |out| as-is.
+ // not convertible and we copy lines to |out| as-is.
var comment []string
// column is the column offset of |comment|.
var column int
@@ -150,7 +150,7 @@
inComment = false
if comment != nil {
if idx == len(line)-2 {
- // This is a convertable multi-line comment.
+ // This is a convertible multi-line comment.
if idx >= column+2 {
// |idx| may be equal to
// |column| + 1, if the line is
@@ -174,7 +174,7 @@
idx += 2
}
- // Parse starting from |idx|, looking for either a convertable
+ // Parse starting from |idx|, looking for either a convertible
// line comment or a multi-line comment.
for {
idx = indexFrom(line, "/*", idx)
diff --git a/util/fipstools/acvp/acvptool/subprocess/drbg.go b/util/fipstools/acvp/acvptool/subprocess/drbg.go
index 338b839..44efd82 100644
--- a/util/fipstools/acvp/acvptool/subprocess/drbg.go
+++ b/util/fipstools/acvp/acvptool/subprocess/drbg.go
@@ -65,7 +65,7 @@
}
// drbg implements an ACVP algorithm by making requests to the
-// subprocess to generate random bits with the given entropy and other paramaters.
+// subprocess to generate random bits with the given entropy and other parameters.
type drbg struct {
// algo is the ACVP name for this algorithm and also the command name
// given to the subprocess to generate random bytes.
diff --git a/util/fipstools/delocate/delocate.go b/util/fipstools/delocate/delocate.go
index ec1cd14..6870a24 100644
--- a/util/fipstools/delocate/delocate.go
+++ b/util/fipstools/delocate/delocate.go
@@ -526,7 +526,7 @@
assertNodeType(argNodes[0], ruleRegisterOrConstant)
targetReg := d.contents(argNodes[0])
if !strings.HasPrefix(targetReg, "x") {
- panic("adrp targetting register " + targetReg + ", which has the wrong size")
+ panic("adrp targeting register " + targetReg + ", which has the wrong size")
}
var symbol, offset string
@@ -772,7 +772,7 @@
// instrCombine merges the source and destination in some fashion, for example
// a 2-operand bitwise operation.
instrCombine
- // instrMemoryVectorCombine is similer to instrCombine, but the source
+ // instrMemoryVectorCombine is similar to instrCombine, but the source
// register must be a memory reference and the destination register
// must be a vector register.
instrMemoryVectorCombine
diff --git a/util/fipstools/hex-search-modify.go b/util/fipstools/hex-search-modify.go
index f52b9c0..9d83cef 100644
--- a/util/fipstools/hex-search-modify.go
+++ b/util/fipstools/hex-search-modify.go
@@ -17,13 +17,13 @@
// This trivial program is used to corrupt the FIPS module. This is done as
// part of FIPS testing to show that the integrity check is effective.
//
-// It finds the (sole) occurance of a given hex pattern in a file and flips the
+// It finds the (sole) occurrence of a given hex pattern in a file and flips the
// first bit. The hex pattern is intended to be the output of running
// `BORINGSSL_FIPS_SHOW_HASH=1 ninja bcm.o`, i.e. the integrity hash value of
// the module. By flipping the first bit we ensure that the check will
// mismatch.
//
-// This is a simplier version of `break-hash.go` for when we're building with
+// This is a simpler version of `break-hash.go` for when we're building with
// BORINGSSL_FIPS_SHOW_HASH. (But we don't do that in all cases.)
package main
diff --git a/util/generate_build_files.py b/util/generate_build_files.py
index 7c5b181..b0bb09f 100644
--- a/util/generate_build_files.py
+++ b/util/generate_build_files.py
@@ -456,7 +456,7 @@
if(NOT WIN32)
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
endif()
- # Clang's integerated assembler does not support debug symbols.
+ # Clang's integrated assembler does not support debug symbols.
if(NOT CMAKE_ASM_COMPILER_ID MATCHES "Clang")
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,-g")
endif()
diff --git a/util/pregenerate/build.go b/util/pregenerate/build.go
index ed73a71..743b84b 100644
--- a/util/pregenerate/build.go
+++ b/util/pregenerate/build.go
@@ -46,7 +46,7 @@
// Src the path to the input perlasm file.
Src string `json:"src"`
// Dst, if not empty, is base name of the destination file. If empty, this
- // is determined from Src by default. It should be overriden if a single
+ // is determined from Src by default. It should be overridden if a single
// source file generates multiple functions (e.g. SHA-256 vs SHA-512) or
// multiple architectures (e.g. the "armx" files).
Dst string `json:"dst,omitempty"`
diff --git a/util/prepare_bcr_module/prepare_bcr_module.go b/util/prepare_bcr_module/prepare_bcr_module.go
index df8c29e..36e2214 100644
--- a/util/prepare_bcr_module/prepare_bcr_module.go
+++ b/util/prepare_bcr_module/prepare_bcr_module.go
@@ -36,8 +36,8 @@
outDir = flag.String("out-dir", "", "The directory to place the script output, or a temporary directory if unspecified.")
numWorkers = flag.Int("num-workers", runtime.NumCPU(), "Runs the given number of workers")
- moduleOverride = flag.String("module-override", "", "The path to a file that overrides the MODULE.bazel file in the archve.")
- presubmitOverride = flag.String("presubmit-override", "", "The path to a file that overrides the presubmit.yml file in the archve.")
+ moduleOverride = flag.String("module-override", "", "The path to a file that overrides the MODULE.bazel file in the archive.")
+ presubmitOverride = flag.String("presubmit-override", "", "The path to a file that overrides the presubmit.yml file in the archive.")
skipArchiveCheck = flag.Bool("skip-archive-check", false, "Skips checking the release tarball against the (potentially unstable) archive tarball.")
pipe = flag.Bool("pipe", false, "Prints output suitable for writing to a pipe instead of a terminal")