Ascon examples#573
Conversation
Fix typos No need to input key size as the size for ascon AEAD algorithm is fixed Add an example for algorithm Ascon-Hash256
09fa582 to
d000810
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds two new usage examples for Ascon algorithms in the examples repository: one for hashing with Ascon-Hash256 and one for file encryption/decryption with Ascon-AEAD128, along with README/Makefile support so users can build and run them.
Changes:
- Add
hash/Ascon-Hash256.cand document how to run it inhash/README.md. - Add a new
crypto/ascon/example (ascon-file-encrypt.c) with a localMakefileandREADME.md. - Link the new Ascon crypto example docs from
crypto/README.md.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| hash/README.md | Documents running the new Ascon hashing example. |
| hash/Ascon-Hash256.c | New Ascon-Hash256 file hashing example program. |
| crypto/ascon/ascon-file-encrypt.c | New Ascon-AEAD128 file encrypt/decrypt example program. |
| crypto/ascon/README.md | Build/run instructions for the Ascon file encryption example. |
| crypto/ascon/Makefile | Builds the Ascon file encryption example. |
| crypto/README.md | Adds a link to the new crypto/ascon documentation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I will fix those errors ASAP. Thanks. |
|
Hi @helkoulak thanks for this example. I don't see you setup as a contributor. Please email support at wolfssl dot com and reference this pull request. We will send you an agreement that we need signed. In the email please include your location and a bit more about your project and interest in Ascon and our project. Also if its commercial or open source or academic. Thanks, |
Thank you David for the instructions. I will contact support ASAP. |
|
Contributor agreement on file. Thank you @helkoulak |
|
@julek-wolfssl please review . Merge when you are happy with it. |
julek-wolfssl
left a comment
There was a problem hiding this comment.
Please add crypto/ascon/ascon-file-encrypt to .gitignore. Everything looks nice but just needs more error handling.
| fseek(inFile, 0, SEEK_SET); | ||
|
|
||
| byte* input = malloc(BLOCK_SIZE); | ||
| byte* output = malloc(inFileLength); |
There was a problem hiding this comment.
Let's write in BLOCK_SIZE chunks too. On error we should delete the file.
There was a problem hiding this comment.
The output still uses a inFileLength buffer.
| goto cleanup; | ||
| } | ||
|
|
||
| for (int i = 0; i < BLOCK_SIZE; i += BLOCK_SIZE) { |
There was a problem hiding this comment.
| for (int i = 0; i < BLOCK_SIZE; i += BLOCK_SIZE) { | |
| for (int i = 0; i < fileLength; i += BLOCK_SIZE) { |
| fseek(inFile, 0, SEEK_SET); | ||
|
|
||
| byte* input = malloc(BLOCK_SIZE); | ||
| byte* output = malloc(inFileLength); |
There was a problem hiding this comment.
The output still uses a inFileLength buffer.
| /* | ||
| * Encrypts a file using Ascon | ||
| */ | ||
| int AsconEncrypt(wc_AsconAEAD128* ascon, byte* key, int size, FILE* inFile, FILE* outFile) |
There was a problem hiding this comment.
Delete the output file on error.
| /* | ||
| * Decrypts a file using Ascon | ||
| */ | ||
| int AsconDecrypt(wc_AsconAEAD128* ascon, byte* key, int size, FILE* inFile, FILE* outFile) |
There was a problem hiding this comment.
Delete the output file on error.
| } | ||
|
|
||
| // Error out on no valid password. | ||
| if (strlen(key) == 1) { |
There was a problem hiding this comment.
Strip the trailing newline here to match aes-file-encrypt.c:289, and this check then becomes == 0.
| int length = 0; | ||
|
|
||
| fseek(inFile, 0, SEEK_END); | ||
| length = ftell(inFile); |
There was a problem hiding this comment.
Also long so as to not truncate.
|
|
||
| 4) Running 'make clean' will delete the executable as well as any created | ||
| files. Making sure that the only files left are 'ascon-file-encrypt.c', | ||
| 'Makefile', and 'README'. |
There was a problem hiding this comment.
| 'Makefile', and 'README'. | |
| 'Makefile', and 'README.md'. |
| @@ -0,0 +1,485 @@ | |||
| /* ascon-file-encrypt.c | |||
| * | |||
| * Copyright (C) 2006-2020 wolfSSL Inc. | |||
| @@ -0,0 +1,134 @@ | |||
| /* Ascon-Hash256.c | |||
| * | |||
| * Copyright (C) 2006-2020 wolfSSL Inc. | |||
| #endif | ||
| #include <wolfssl/options.h> | ||
| #include <wolfssl/wolfcrypt/settings.h> | ||
| #include <wolfssl/ssl.h> |
There was a problem hiding this comment.
| #include <wolfssl/ssl.h> |
Two examples that show how to use the algorithms Ascon-Hash256 and Ascon-AEAD128