Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

x25519 vectors #76

Closed
bunnie opened this issue Jul 15, 2021 · 6 comments · Fixed by #84
Closed

x25519 vectors #76

bunnie opened this issue Jul 15, 2021 · 6 comments · Fixed by #84
Assignees
Labels
bug Something isn't working security An issue potentially related to security - memory leaks, architectural crypto, etc.

Comments

@bunnie
Copy link
Member

bunnie commented Jul 15, 2021

Might be a good idea to port these into Xous and check the implementation against this set of vectors:

https://github.com/google/wycheproof/blob/master/testvectors/x25519_test.json

@bunnie bunnie added enhancement New feature or request good first issue Good for newcomers security An issue potentially related to security - memory leaks, architectural crypto, etc. labels Jul 20, 2021
@fweissberg
Copy link
Contributor

fweissberg commented Sep 1, 2021

I'd like to work on this issue and thought about implementing it this way:

  • Add a new binary crate wycheproof-import with code to parse the test vectors and put them into a file wycheproof_vectors.bin.
    • Add the x25519_test.json to the crate for easy reproducibility and explicit versioning.
    • Potentially, only considering the public, private and shared fields of each test vector is sufficient since the result is always either valid or acceptable.
  • Add a wycheproof subcommand to the engine shellchat command that runs the vectors using the methods from x25519_dalek::{StaticSecret, PublicKey} and reports the results as a summary.

Would that work for you? In particular, I was wondering if another *.bin file can be included without breaking something or using too much memory. If only the fields mentioned above were used, the file would contain 518 * 96 bytes.

@bunnie
Copy link
Member Author

bunnie commented Sep 1, 2021

Hello! Thank you for having a look at this. The good news is that @xobs has a port of engine25519 working in Renode, so you may even be able to emulate your solution to see if it works without the need for real hardware.

I think your approach works well. Overall, it makes sense to just include the vectors as a .bin file as long as there is a way to do that without having to invoke nightly Rust (iirc it's possible to do in stable, but I can't recall how it's done off the top of my head); alternatively, you could do something like an autogenerated Rust module that compiles into some static variables that can be accessed later on. This is the approach that was taken in absorbing the database of FPGA frames to patch for key injection into the bitstream: https://github.com/betrusted-io/xous-core/tree/main/services/root-keys/src/key2bits; there's a Python file that reads in the database and spits out an included .rs file. The main advantage of that approach is that the binary data gets type annotations around it without having to do some unsafe cast of a raw chunk of data to a slice or other structure. The main disadvantage is it takes forever for the linker to process big static structures like this.

I don't have a strong opinion either way; as long as it's all done with stable features, casting a repr-C struct onto a binary blob with an unsafe operation to conjure test vectors like this feels like no big deal. If there is a correctness issue resulting from the unsafe operation it'd fall out in the actual x25519 tests failing, and it won't have a domino impact on the correctness of other systems.

From the memory usage standpoint, 50kiB of extra RAM dedicated to the test routine is not going to break the system. We're currently using about 6.7MiB out of 16MiB available RAM space (and all code is copied into RAM right now before being run). Eventually, we'll make deep diagnostic tests like this a "feature" option so we can save on code space, but for now we have enough memory space to carry all the test frameworks.

@bunnie
Copy link
Member Author

bunnie commented Sep 1, 2021

If you have any questions on how to get Redone running or how to navigate the code base, we welcome them. We're still figuring out what needs to be better documented to make the on-boarding process less painful.

@fweissberg
Copy link
Contributor

Thanks for the detailed feedback, it's much appreciated!

I think I found a way to use a .bin file without the need for nightly features by adapting what you were already doing with engine25519_vectors.bin. It will need some polishing but should be ready soon.

So far, I did not have any problems getting Xous running on Renode or navigating the code base. However, I was just gathering information for a bug report when @xobs latest commits unbroke the system for me. Hosted mode worked fine, so I was able to play around a bit. Can't wait to see the hardware go into production. :)

fweissberg added a commit to fweissberg/xous-core that referenced this issue Sep 5, 2021
Closes betrusted-io#76

The test vectors in wycheproof-import/x25519_test.json correspond to the upstream commit C2SP/wycheproof@4672ff7.

For details see wycheproof-import/README.md.

Signed-off-by: Fabian Weißberg <[email protected]>
fweissberg added a commit to fweissberg/xous-core that referenced this issue Sep 5, 2021
Closes betrusted-io#76

The test vectors in wycheproof-import/x25519_test.json correspond to the upstream commit C2SP/wycheproof@4672ff7.

For details see wycheproof-import/README.md.

Signed-off-by: Fabian Weißberg <[email protected]>
fweissberg added a commit to fweissberg/xous-core that referenced this issue Sep 5, 2021
Closes betrusted-io#76

The test vectors in wycheproof-import/x25519_test.json correspond to the upstream commit C2SP/wycheproof@4672ff7.

For details see wycheproof-import/README.md.

Signed-off-by: Fabian Weißberg <[email protected]>
fweissberg added a commit to fweissberg/xous-core that referenced this issue Sep 5, 2021
Closes betrusted-io#76

The test vectors in wycheproof-import/x25519_test.json correspond to the upstream commit C2SP/wycheproof@4672ff7.

For details see wycheproof-import/README.md.

Signed-off-by: Fabian Weißberg <[email protected]>
fweissberg added a commit to fweissberg/xous-core that referenced this issue Sep 5, 2021
Closes betrusted-io#76

The test vectors in wycheproof-import/x25519_test.json correspond to the upstream commit C2SP/wycheproof@4672ff7.

For details see wycheproof-import/README.md.

Signed-off-by: Fabian Weißberg <[email protected]>
fweissberg added a commit to fweissberg/xous-core that referenced this issue Sep 5, 2021
Closes betrusted-io#76

The test vectors in wycheproof-import/x25519_test.json correspond to the upstream commit C2SP/wycheproof@4672ff7.

For details see wycheproof-import/README.md.

Signed-off-by: Fabian Weißberg <[email protected]>
@bunnie bunnie closed this as completed in #84 Sep 6, 2021
@bunnie
Copy link
Member Author

bunnie commented Sep 6, 2021

@fweissberg has ported the vectors in, and the following failures are noted running on hardware:

INFO:engine_25519: montgomery job 0 (services\engine-25519\src\main.rs:823)
INFO:engine_25519: montgomery job 100 (services\engine-25519\src\main.rs:823)
INFO:engine_25519: montgomery job 200 (services\engine-25519\src\main.rs:823)
INFO:engine_25519: montgomery job 300 (services\engine-25519\src\main.rs:823)
INFO:engine_25519: montgomery job 400 (services\engine-25519\src\main.rs:823)
INFO:engine_25519: montgomery job 500 (services\engine-25519\src\main.rs:823)
ERR :shellchat::cmds::engine: wycheproof test #111 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   f8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #112 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   f6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #113 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #114 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #131 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 46add6f48ffff461777d4f89b6fdf1155aa051a96387d45f3e5e371a236b6e52 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   037fbaeb8f095241c1043eeb460946ec6fa0cf86121adb1db05bc9b35165c911 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #132 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 1adbe32207e21f71e1af53884d2a2276481e298e557f4dacb3720f2458e3082d (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   83d1a2d110ced8f77e2db614eb8868ffe77e35e604191455b8e36bffc7876a78 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #134 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 421bed1b26da1e9adbeada1f32b91a0fb4ced0f1110e0a4a88e735a19ee4571e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   13a406639beee021ed01a21410106bdd9966841e1bc7bd74e7826b893eeae34b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #135 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: d7b47463e2f4ca9a1a7deea098da8e74ac3b4a109083d997259b12992e7e7e06 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   4f0fa6bb045d1d188ed74794a6564eba2734d25fb7fa8c753c557d95cf5c4618 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #143 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 71133905b8a57ea8c38de0ecf213699a75b096c2df21f07f7e9eb03e9fa53f5c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   5362024d256a73a8ebb04c3ea5ff68859d568a203a5e2e7d6d6657edd863f92c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #144 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 3dc7b70e110766b2bf525252ebed98a100b2e532dc69544464da1bbab8625f6d (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   95c7df79b5d749df4005688f6d0ee3a6133bf32a664315269cc83cfc22053b31 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #147 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: dfa988a477003be125b95ccbf2223d97729577d25e1d6e89e3da0afabdd0ae71 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   18069892af1a48b2b94e6a83714425b978aea2c95772fe4c0d3d5f9ce391ea58 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #161 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 4a7e2c5caf1d8180eb1c4f22692f29a14b4cdc9b193bd1d16e2f27438eef1448 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   4e03046c63f1fe4f9f52d2532fd1ab757ea20ffd438884f1f75ae70810abb00a (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #163 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: b252bc8eabfaa68c56e54d61b99061a35d11e3a7b9bda417d90f69b1119bcf45 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   32b02a140ef5c2d5b2136ebe2ca1567a269bbbb6b3803b8601c243bb4e47320a (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #171 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 42184e22c535530c457bd3b4f1084cbf5e297f502fe136b8d1daecf5334cc96c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   b961d3589962d0986fd8be0cb0e4a94a5c263881d3a931c3018f959475180237 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #172 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: f654d78e5945b24bc63e3e6d790e0ae986e53937764068b1bce920e1d79b756f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   45c765cefd92f4d08a3c59a296cbe13db2220f22e53a820092a5851ac39d741a (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #173 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: cd8a09b04795edcc7061867373981aa748651ebdce5ec218a335b878cefe4872 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   97e16688a8b42fc520c66ffd41f5a98dbbb913f7e6dfa4228c5947b98789274b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #176 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 3fe710d6344ff0cb342e52349e1c5b57b7a271f2a133bb5249bbe40dc86e1b40 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   0a253a15ce5910ae5abe91e0b5008b24e11b62efbe4c3a026b5ef6d680ef1d79 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #179 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 87a79c9c231d3b9526b49bf3d683bf38c3c319af7c7c5d1456487398da535010 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   fe0cb86d2b7428f199eb8b5e2909554519a8e61c2b9421709b310803744faa15 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #181 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: dbf6203516635840cf69a02db87cf0d95dae315da7fc1ec7ce2b29e1f2db6666 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   3c5b3423328a5fef4420d471368f4f52cf3dd26abaade46c453badddefbdc60e (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #184 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: c6d6499255133398f9dd7f32525db977a538118800bfaf3aad8bcd26f02c3863 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   123ca2968c8540ca62b42fdd87047477065506e3ed347f2e541ace54a7272375 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #185 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 0d74214da1344b111d59dfad3713eb56effe7c560c59cbbb99ec313962dbba58 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   3349950fa814ec0213ba5859cb000f56c002692ca0be73dae1196ae978b60e02 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #188 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: dbe7a1fe3b337c9720123e6fcc02cf96953a17dc9b395a2206cb1bf91d41756e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   eae03f5b7e49053db27d61051235928de333f0b3a5ffec486f2e2d021c8df577 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #209 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 5ba4394ed1a664811b01557944becf7585652a8acbdbf806742911207bd79346 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   d315d152e2868a5959986075a7c0abbe36dd5c1f79eb10a6a061354aa7669e18 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #226 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 8cf4538ae5f445cc6d273df4ad300a45d7bb2f6e373a562440f1b37773904e32 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   0f09b85406c581d1b78af04902223dd714c2c788a9dd24ce456beef1c7a6db2c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #227 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: d5766753211d9968de4ac2559998f22ef44e8aa879f3328cbc46aa858dcb433c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   d422c72748dc846e82cdc25876f5c47c392d7ea4424b0ad26f6cbcddc8be1d5c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #230 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: b2bbbd173f41d952d329251da973a9500300628177ad0fb79d01e2e263905b38 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   0ccf26e635d2bb42687ba086355d34d50ed3154936526f83d1c958b257a2b82c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #234 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 790d09b1726d210957ce8f65869ca1ec8fa0b2b06b6bcf9483b3eb55e49e9272 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   c0a634168fbfcf0ee856bea37bdb1992e9c56574d3c7dd8c939fff7d7c54c435 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #241 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: ab39db4aa29ac4017c7446f1ad0c7daa9a37f1b6b4f2e9d2902ccefb84839d28 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   b179151384dc14edda4d56fb06dcb4cf160bd930a2065007590e666c911a4458 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #242 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 13de41659e3e308d6e26c94282fcc3e0364ddf0809ddee6c8e7abb5091b02b00 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   2bf36dc5d6534a1fa5599586254c2df9fdd2d87685de65acde007786fa1ced28 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #245 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: e6b298de9cb6358fbbb00f11890f5714a3858e8f05a2a8d1cf39fe78cc55dd4e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   3fce54998936adbe18652d4156b943d355b80dce8cd632531833050ed4285513 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #246 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 967bbe298494b4a5f95853cfde9dc85970b2a4b5dd2c92782901e853957f5809 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   8db9bb608891c11c1441d3d98328839a79631b9c4994fc51eeaac390cd547a3b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #248 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: ea7572e27a9120de1f13b85710ba69a3471b7b3f5d12bc430c12c4bbf8aa3957 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   9d1f772c0fc11cb6111860534a44c13ee4e19bc0c7a96d0b79334ecbb6a7c85e (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #251 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 74f95b4700f0185f33c5b5528ed5012a3363f8bbd6f6a840aa1f0f3bdb7c9650 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   23fa2c6977cb454d4497ee5b3300f0923bc1ebf7d926714cdad31caa5c41ca71 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #267 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 20322dd024fb5a40f327cf7c00da203734c2a279b9666a9ff7d8527c927b675e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   c2c154776277134473f24ab3a8f249f0b27a7a017416dc82e4b3b19b2247db30 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #269 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 37567f7ec0449c7b823cf7b0e219e9dd880e56a1464d0417a9e67eff42332866 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   5dbe0057a5d9e83f99589b7f888295c787ae6bfc6308e2b69342928166738306 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #279 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: bcc95fb4890ed311f3fb4f44c2b60866cdddec97db820a7f79f475337e16284a (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   4fadee09637b4c3cd6abd1a7ddc7b54b9c8eb6cb5385297f8efefd53d6b1936e (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #281 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: cce7bb644df94501421db49d15e821c7b0aaabecdf8837ab989b1f23bac08f35 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   34e276e7c076e4608889c9f4d3a57609713b9a703f58454d727cbd6911a6bd63 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #282 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 71fdd3405c30805701ae4dfad98c493aecfcf2e3b563e7068373c1b19137c268 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   75f5826566dc4204895df52d54223674bee0ec473e5a81b68f64fff280052764 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #283 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: bf280aeecb74ab34e1310aa6fe8dc972f94dc40c7f88b72137ccfe34ed343c13 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   75ae6ffa83e61a3a1479ef5672f8abffad31c88f13e15bc5035dad237fe20079 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #289 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 338c9917dbf11a0cabe8ad4a65959229bc00f99c211e752b20b8b49b87756d0b (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   e40505206115e57a4e43842a6885823be9df4dbb42f72571453cbb8b70287f38 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #310 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: c5edcc5d447071c08dfa8281414ae6a02de753e2f7bb80af5f6253e56db43422 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   ff42cdb18fc3f18336e1c2487f19720482d3987d720fbace1782a1ce8847b85c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #315 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: a3c6b75168211e8e0a49ca815bfe3f469f29864dc8166152b456e7074afa9b5b (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   105bde9d6003940656243e06d44a1c06964572b2065a607ddabc32e3290cc00c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #316 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: deaae6c9952844a3a1d01688e7105b0bbeadc160763c2002b6d0bcf35c22d123 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   912ce2a6fb95fec1c57d53842247bbe364ef13fd302e2a3065b06b602c566b6b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #319 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 4ed6f8d62932541c6bea16e03835f1f758a5c41722b5c9989c9c7cc08e34e37b (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   1af7558bcb63e30e987ebe73df385380c13e15222704118e95bcd0cba3c2a552 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #320 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 521a5b8149a132d155e6b4ed113900506cfc2f76d2a3e14196d69eb85db3c952 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   2519c3ebb5ad395c8e1c2dc91031489be74faef42d5365954929d9aab792886f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #321 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: e831d6cee95ca1b4c96bb89457562fff36cb4d08b81da89b810b425ecdbafd78 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   d7971b0b83f21489677b2e1016a6db18358369cd8682cf52edf61e8d58fa0f28 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #327 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 1ebe6ca711a649ae487b332747e3dc0306340560cab6bc6029e44f6a7e0ee41c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   aa3b8bf164350f8fd4ef84eb0676f23f3e44a46cdedd115aee768ce771f8b84a (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #329 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 308ef99dae1064a444fa90775b5dd5b1952d7224a0e5ae031df432640f416208 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   b75b8a6ee4e5cdb5a8ca491ebf531946fac896595fdacd031b74ad06a6d7c70b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #336 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 2d49b09f81f3f6fab2c67e32f1bcead2ad09ac9e0d642b0873becfb64de2ab23 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   2fd7f5955495d0f88c7746ff7d89924e2546824882eacd9ddab99552e1ba210f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #337 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: a199368e683c3036a48f4c5f32b32a547dd39f3d1007ca0a0bebcad0a8ac6f5c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   95211ed39975531daff6a7d8ad51f16cd25123989b25f399ebdb25b147677f4f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #348 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: cff2596b7afe36f4cab9c70133d7aa0f9914f9abc6c3b9895472e2a5894a8037 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   30b61a048500da05cae3f17a48c85748bba8705e30f6d8aa14f5f2ead1750f5f (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #359 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: b3453c9c82a2d1d956156de2399cb70dd4e1ec53aea967e035753c1cdae13c39 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   24a034df226fcf5f1cfaca289aa198299cadd7a2edbf8ecab4906c34e700a102 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #364 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 8daf5f4b84730144ea8a53ce39cc907e39a89ed09f0202e7be0d3bda38da663b (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   d6d417f22a216022afc809ae6b6dd31d9ad40c62a898931de81c0caf4290cb2a (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #365 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: da8b7eba6f72c3f3ef33d8982093492e06be39bb0db29c465d95a8e52ef64341 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   632d6aed4161fdd146b139373f239848d0459cc9f1c9a38eb4360014a6b81028 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #366 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 0419a71a08d3fdd574cbc932e8f1605933ddcdd9774f5614269b7ed850c8650e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   40e2ca6806fb9948e4fe7b4a7f9c59a47686d756ffb34faf51b4b6e3161f744d (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #367 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 9f2fcd0c756288c1716ecd1f2a74864b93a7717bfaf5248858dcb6fdbea12864 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   0efd576dd4bbde6e3df8caaf9fa5adfa5218960aa47ec19475fb149b9b59c149 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #384 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: a29005c6b9dbf1707dc2adce4506b55831e8675b7d2d54b0c1037741e3bc611b (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   b1697385c46d9abc81c9b2f16ed90404d9e4a37ee4e589cf0bea187ec94f0572 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #396 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 0080e5b9985a960a832133812a7ab9951c6b2c75894deb3e35509190a6bdf457 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   e4563577aa7c63acbace5d228c56ca801de328294c066233aa72333ee53ba43a (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #398 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 63788190b10d7451f5fc2b82c421151db4f3e22782e392da6d8d3aba2c344306 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   333e6b3988c669af760c608e1302feb1dbf86db1d015d120960637107a5df205 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #403 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 1c94868bc8acb3137498209b2812feb53501389f5aa37fecbfd5cb54e1358e0e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   35cfee7a843a7d24d43b559a5999d673f2c82665976a66a07f8c1fd4a2f1ec44 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #407 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: fec3e94cb5f316625b090c2c820828ce0f3ee431e8d6e12abccc7ef2bd0be81a (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   809cc6b8173fa2cec6c5639cd674afd1035db65e696e000ef6a71096dc538245 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #408 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 96903bac9dc60b6178d734890c25db4bed9ea4dbcf6fcbcdc90e6f5694c8b21c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   fafbad388008650f99f6bdb7ce82ccdba0929aed05b0ead3a2fbbd587ce8b563 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #409 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 50050d0ab1ddd2dd90c460ab8f09e1f80e37cae57d4231adae10c10a4a2b003e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   4d04717470cc6edebdb356963478487452836e143c6b38a5e92b79c09381a058 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #413 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: b210e368729501d9f9b6ebefbebae38f195f91eaf2a5a3a49288bb615ff2216c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   6228a163e999ebc3919937a2c6240ea6afcfed94c8bcd595f62aba7f93d22d1c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #418 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 510c64151e5d0737fc324bd15fb5d3966908751cd1a06954b556196655ee5540 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   f23658464c25df4789ccd28eb3c5d23c542d38eeda2629044c63ffb29aa18d4b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #436 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: f5cb3a1b76185a29a6360b2142feebb11f3d08f4fd8d73df3a5228624a521c02 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   cab19276865a531a97e6b0f2c16fbf31c9d375951d8fdd5780b92b86e143e919 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #440 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 690305c9e192cd8a513f705b3f101ecdf3db1ea15a09c4a1bce3a8cdc3a1a93f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   ce97729a1eaf4cd145f78664f6446ab4c7e3ac9eceee280b2806d1ce1690af65 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #454 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 06283fcf69dc83e99d92e5336f499a1d8fa75ed2c819b5ae6ea8094454324b27 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   7a7ed3fb2004f4cf0eea747ed228206f9e6f4ad20b7e05a7b53bf716a39fff73 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #457 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: c8d85bfa74b4b26461297b350c975183fea9d33ba29c3a4934509c2ecda58a79 (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   a560e34a5adcfcef3636b33fef6c5907430e9fb54acc758fc22d8d4a69b5645b (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #460 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: db6851b12585bc11be9362c96a545c6f2ba55f04009792463b96a38cb9b3f07c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   68c780048c74d4932b26ca39312e2d35f6e7c63c59b51cb50b241b4321702d62 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #465 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: db990d979f4f22f766e7826d93554e771b361de461274d6c37baadeb8ef7be4e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   e308e0dfaecc2aa0bfc355ae074ef0d110c545839dc5cf0130e2ddb9feaac639 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #470 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 00313717d33e3b41a0865986157582e053502a172b88d01bb7b10831a9fc4e6c (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   c085ba76e3bb0633eb9830ea09e066582b5e648e97a3023f8f5f3e7b8734dd5c (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #482 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: bb4431bea7a5871c1be27a2674094627eaaa4425c99cd3fa41bd7e13cbd7bf7e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   db12297bb65ba5d3968d31a2f1f9cc0cb0d9d67df36cc032dbc3176caf84d172 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #486 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: c8085877800c175e949cdd88e196eb9c4841da2ac446dfed9085bda5bbec265d (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   603ed4ea7377409deb3db9a7968bed8a70b89ee3006b8c46c7c40bb477ceeb30 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #505 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 335394be9c154901c0b4063300001804b1cd01b27fa562e44f3302168837166e (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   e979d6de0c28cd2e8ed9cecd7f77508d4cc925428a3ea2c7485c6f4df906e228 (services\shellchat\src\cmds\engine.rs:529)
ERR :shellchat::cmds::engine: wycheproof test #507 failed: (services\shellchat\src\cmds\engine.rs:527)
ERR :shellchat::cmds::engine: expected: 0d8c21fa800ee63ce5e473d4c2975495062d8afa655091122cb41799d374594f (services\shellchat\src\cmds\engine.rs:528)
ERR :shellchat::cmds::engine: actual:   d86ec15f6ee8eaee3417ea7db0cd3aa3d7a2fa293be54320a053ab054564fc4d (services\shellchat\src\cmds\engine.rs:529)

The porting task is finished, but leaving this issue to track progress on fixing the failed tests.

@bunnie bunnie added bug Something isn't working and removed enhancement New feature or request good first issue Good for newcomers labels Sep 6, 2021
@bunnie bunnie self-assigned this Sep 6, 2021
@bunnie
Copy link
Member Author

bunnie commented Sep 6, 2021

The issue is fixed in this patch: betrusted-io/gateware@817e284

Specifically:

@@ -1413,7 +1413,7 @@ carries that have already been propagated. If we fail to do this, then we re-pro
                 self.dsp_match3 &
                 self.dsp_match2 &
                 self.dsp_match1 &
-                (self.dsp_p0 >= 0x1_ffed)
+                (self.dsp_p0[:17] >= 0x1_ffed)
             )
         ]

The normalization overflow computation was looking at the entire output of the DSP p register, which would cause a normalization to trigger when actually what we wanted was just a carry.

All vectors now pass with this patch.

Thanks @fweissberg for committing the test vectors that caught this very subtle bug!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working security An issue potentially related to security - memory leaks, architectural crypto, etc.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants