diff --git a/include/misc.h b/include/misc.h index 26c1ffb..16acf09 100644 --- a/include/misc.h +++ b/include/misc.h @@ -24,7 +24,7 @@ along with this program. If not, see . #include void why2_generate_text_key_chain(char *key, int *textKeyChain, int textKeyChainSize); //GENERATES ARRAY FOR ENCRYPTION/DECRYPTION -void why2_generate_key(char *key, int keyLength); //GENERATE ENCRYPTION KEY +char *why2_generate_key(int key_length); //GENERATE ENCRYPTION KEY void why2_deallocate_output(why2_output_flags flags); //DEALLOCATES flags enum WHY2_EXIT_CODES why2_check_version(void); //THIS FUNCTION CHECKS IF LATEST WHY2_VERSION OF WHY2 IS USED enum WHY2_EXIT_CODES why2_check_key(char *key); //CHECKS IF KEY IS VALID diff --git a/src/core/lib/utils/misc.c b/src/core/lib/utils/misc.c index e364151..92a4322 100644 --- a/src/core/lib/utils/misc.c +++ b/src/core/lib/utils/misc.c @@ -410,9 +410,10 @@ unsigned long why2_compare_time_micro(struct timeval startTime, struct timeval f return (finishTime.tv_sec - startTime.tv_sec) * 1000000 + finishTime.tv_usec - startTime.tv_usec; } -void why2_generate_key(char *key, int keyLength) +char *why2_generate_key(int key_length) { int numberBuffer; + char *key; if (!seedSet) { @@ -428,7 +429,7 @@ void why2_generate_key(char *key, int keyLength) if (!why2_get_flags().no_output) fprintf(stderr, "Reading file failed!\n"); why2_clean_memory("core_key_generation_random"); - return; + return NULL; } numberBuffer = abs(numberBuffer); //MAKE numberBuffer POSITIVE @@ -441,7 +442,9 @@ void why2_generate_key(char *key, int keyLength) why2_reset_memory_identifier(); } - for (int i = 0; i < keyLength; i++) + key = why2_malloc(key_length + 1); + + for (int i = 0; i < key_length; i++) { //SET numberBuffer TO RANDOM NUMBER BETWEEN 0 AND 52 numberBuffer = (rand() % 52) + 1; @@ -459,5 +462,7 @@ void why2_generate_key(char *key, int keyLength) key[i] = (char) numberBuffer; } - key[keyLength] = '\0'; + key[key_length] = '\0'; + + return key; } \ No newline at end of file