/* Unreal3.2.8's cloak key generator, but improved.
*
*/

#include <stdio.h>

#define minKeyLen 20 /* Minimum key length allowed. */
#define maxKeyLen 20 /* Maximum key length allowed. */

int main()
{
	fprintf(stderr, "Here are 3 random cloak keys [%d minimum characters, %d maximum characters]:\n", minKeyLen, maxKeyLen);

	static char genBuf[maxKeyLen + 1];
	static int KeyLen = 0;
	static int KeyNum = 0;
	static int typeChar = 0;
	srand(time(NULL));
		
		for (KeyNum = 0; KeyNum < 3; ++KeyNum)
		{
			KeyLen = (rand() % (maxKeyLen - minKeyLen + 1)) + minKeyLen;

				for (typeChar = 0; typeChar < KeyLen; ++typeChar)
				{
					switch (rand() % 3)
					{
						case 0: /* Uppercase */
						   genBuf[typeChar] = (char) ('A' + (rand() % ('Z' - 'A')));		
						   break;

						case 1: /* Lowercase */
						   genBuf[typeChar] = (char) ('a' + (rand() % ('z' - 'a')));
						   break;
						
						case 2: /* Integers (Digits) */
						   genBuf[typeChar] = (char) ('0' + (rand() % ('9' - '0')));
						   break;

						default: /* Something went wrong (invalid characters were generated) */
						   break;
					}
				}
				genBuf[KeyLen] = '\0';
				fprintf(stderr, "%s\n", genBuf);
		}
}
