This forum is provided to promote discussion amongst students enrolled in
CITS3007 Secure Coding.
If posting a question, it's suggested you check first whether your question
is answered in the unit Frequently Asked Questions (FAQ) list, and use the search box
(on the right) to see if an answer to your question has already been posted.
Please consider offering answers and suggestions to help other students!
And if you fix a problem by following a suggestion here,
it would be great if other interested students could see a short
"Great, fixed it!" followup message.
Hey I think I've found another typo.
In the pdf the caesar decrypt declaration has plain_text before cipher_text:
void caesar_encrypt(char range_low, char range_high, int key, const char * plain_text, char * cipher_text);
But crypto.h has them the other way around:
void caesar_decrypt(char range_low, char range_high, int key, const char * cipher_text, char * plain_text);
Hey I think I've found another typo.
In the pdf the caesar decrypt declaration has plain_text before cipher_text:
void caesar_decrypt(char range_low, char range_high, int key, const char * plain_text, char * cipher_text);
But crypto.h has them the other way around:
void caesar_decrypt(char range_low, char range_high, int key, const char * cipher_text, char * plain_text);
No, that's not a typo. Typically in related functions, we put input and output parameters in a consistent order. In the encryption function, cipher_text is an output. But in the decryption function, plain_text is the input, and cipher_text is the output. You can tell, because an input parameter is normally marked const, to indicate that it shouldn't be changed, whereas the output parameter is not (it's just a plain char *).
In some of the C library function, output parameters come first – e.g. memcpy, which has the prototype void *memcpy(void *dest, const void *src, size_t n). I'm not sure what the reasoning is, but in my code (and a lot of other C code I've seen), the output parameters tend to go at the end.
I hope that clarifies things! Let me know if you have any other questions.
Hey I think I've found another typo.
In the pdf the caesar decrypt declaration has plain_text before cipher_text:
void caesar_encrypt(char range_low, char range_high, int key, const char * plain_text, char * cipher_text);
But crypto.h has them the other way around:
void caesar_decrypt(char range_low, char range_high, int key, const char * cipher_text, char * plain_text);