int main()
{
	char *plain_text, *encrypted_text, *decrypted_text;
	int index, *key, key_length, *key_length_address = &key_length;
	long length;
	long *length_address = &length;

	if(FilterText() == -1)
	{
		printf("\nA file I/O has occured!");
		exit(1);
	}

	if((plain_text = ReadPlainText(length_address)) == NULL)
	{
		printf("A problem has occured!");
		exit(2); 
	}

	if((key = GenerateKey(key_length_address)) == NULL)
	{
		printf("A memory problem has occured!");
		exit(3);
	}

	if((encrypted_text = Encrypt(key, key_length, plain_text, length)) == NULL)
	{
		printf("A memory problem has occured!");
		exit(4);
	}

	if(WriteTextToFile("encrypted_text.txt" ,encrypted_text, length) == -1)
	{
		printf("\nA file I/O has occured!");
		exit(5);
	}

	if((decrypted_text = Decrypt(key, key_length, encrypted_text, length)) == NULL)
	{
		printf("A memory problem has occured!");
		exit(4);
	}

	if(WriteTextToFile("decrypted_text.txt" ,decrypted_text, length) == -1)
	{
		printf("\nA file I/O has occured!");
		exit(5);
	}	

	free(plain_text);
	free(encrypted_text);
	free(decrypted_text);;
	free(key);

	return 0;
}
Esempio n. 2
0
//***************************************************
bool Logic::AddSpecialSyntax()
{
  int arg1,arg2,arg3;
  bool arg2isvar=false,arg3isvar=false,arg2isstar=false;
  string ArgText="",expr,expr2;
  int OldLinePos;

  OldLinePos = LinePos;
  LinePos -= CommandName.length();
  if(CommandName[0]=='*'){
    LinePos++;
    ArgText = "*" + ReplaceDefine(ReadPlainText());
  }
  else ArgText = ReplaceDefine(ReadPlainText());

  if(ArgText[0]=='v'){

    arg1 = Val(ArgText.substr(1));
    if(arg1<0 || arg1>255)
      ShowError(CurLine,"Invalid number given or error in expression syntax.");
    else{
      SkipSpaces();
      expr = ReadExprText();
      if(expr == "++"){
         WriteByte(0x01); // increment
         WriteByte(arg1);
         return true;
      }
      else if (expr == "--"){
         WriteByte(0x02); // decrement
         WriteByte(arg1);
         return true;
      }
      else{
        if(expr[0]=='*'){
          expr = expr.substr(1);
          LinePos++;
        }
        SkipSpaces();
        arg2isstar = false;
        ArgText = ReadPlainText();
        if(ReadPlainText() == "" && LowerCaseLine[LinePos-ArgText.length()]=='*'){
          LinePos++;
          ArgText = "*" + ReplaceDefine(ReadPlainText());
        }
        else ArgText = ReplaceDefine(ArgText);

        if(ArgText[0] == 'v' && !arg2isstar)arg2isvar=true;
        else if (ArgText.substr(0,2) == "*v" && !arg2isstar) arg2isstar = true;

        if(arg2isvar)arg2 = Val(ArgText.substr(1));
        else if(arg2isstar)arg2 = Val(ArgText.substr(2));
        else arg2 = Val(ArgText);

        if(arg2 <0 || arg2 >255)
          ShowError(CurLine,"Invalid number given or error in expression syntax.");
        else{
          if(expr == "+=" && !arg2isstar){
            if(arg2isvar)WriteByte(0x06);  //addv
            else WriteByte(0x05);          //addn
            WriteByte(arg1);
            WriteByte(arg2);
            return true;
          }
          else if(expr == "-=" && !arg2isstar){
            if(arg2isvar)WriteByte(0x08);  //subv
            else WriteByte(0x07);          //subn
            WriteByte(arg1);
            WriteByte(arg2);
            return true;
          }
          else if(expr == "*=" && !arg2isstar){
            if(arg2isvar)WriteByte(0xa6);  //mul.v
            else WriteByte(0xa5);          //mul.n
            WriteByte(arg1);
            WriteByte(arg2);
            return true;
          }
          else if(expr == "/=" && !arg2isstar){
            if(arg2isvar)WriteByte(0xa8);  //div.v
            else WriteByte(0xa7);          //div.n
            WriteByte(arg1);
            WriteByte(arg2);
            return true;
          }
          else if(expr == "="){
            if(LinePos < LineLength && EditLines.at(CurLine)[LinePos] == ';'){
              //must be assignn, assignv or rindirect
              if (arg2isvar) WriteByte(0x04); // assignv
              else if (arg2isstar) WriteByte(0x0A); // rindirect
              else WriteByte(0x03); // assignv
              WriteByte(arg1);
              WriteByte(arg2);
              return true;
            }
            else if(arg2 != arg1) ShowError(CurLine,"Expression syntax error");
            else{
              SkipSpaces();
              expr2 = ReadExprText();
              SkipSpaces();
              ArgText = ReplaceDefine(ReadPlainText());
              arg3isvar = (ArgText[0]=='v');
              if(arg3isvar)arg3=Val(ArgText.substr(1));
              else arg3 = Val(ArgText);
              if(arg3<0 || arg3>255)
                ShowError(CurLine,"Invalid number given or error in expression syntax.");
              else{
                if (expr2 == "+"){
                  if (arg3isvar) WriteByte(0x06);  //addv
                  else WriteByte(0x05); //addn
                  WriteByte(arg1);
                  WriteByte(arg3);
                  return true;
                }
                else if (expr2 == "-"){
                  if (arg3isvar) WriteByte(0x08);  //subv
                  else WriteByte(0x07); //subn
                  WriteByte(arg1);
                  WriteByte(arg3);
                  return true;
                }
                else if (expr2 == "*"){
                  if (arg3isvar) WriteByte(0xa6);  //mul.v
                  else WriteByte(0xa5); //mul.n
                  WriteByte(arg1);
                  WriteByte(arg3);
                  return true;
                }
                else if (expr2 == "/"){
                  if (arg3isvar) WriteByte(0xa8);  //div.v
                  else WriteByte(0xa7); //div.n
                  WriteByte(arg1);
                  WriteByte(arg3);
                  return true;
                }
                else ShowError(CurLine,"Expression syntax error");
              }
            }
         }//if(expr == "=")
          else ShowError(CurLine,"Expression syntax error");
        }
      }//if (expr != "--" && expr != "++")
    }//if(arg1<0 || arg1>255)
  }//if(ArgText[0]=='v')
  else if(ArgText.substr(0,2)=="*v"){
    LinePos -= (CommandName.length() -1);
    ArgText = ReplaceDefine(ReadPlainText());
    arg1 = Val(ArgText.substr(1));
    if(arg1<0 || arg1>255)
      ShowError(CurLine,"Invalid number given or error in expression syntax.");
    else{
      SkipSpaces();
      expr = ReadExprText();
      if(expr != "=")ShowError(CurLine,"Expression syntax error");
      else{
        SkipSpaces();
        ArgText = ReplaceDefine(ReadPlainText());
        arg2isvar = (ArgText[0]=='v');
        if(arg2isvar)arg2 = Val(ArgText.substr(1));
        else arg2 = Val(ArgText);
        if(arg2 < 0 || arg2 > 255) ShowError(CurLine,"Invalid number given or error in expression syntax.");
        else{
          if(arg2isvar)WriteByte(0x09); //lindirectv
          else WriteByte(0x0b); //lindirectn
          WriteByte(arg1);
          WriteByte(arg2);
          return true;
        }
      }
    }
  }//if(ArgText.substr(0,2)=="*v")
  else LinePos = OldLinePos;
  return false;
}
Esempio n. 3
0
//***************************************************
bool Logic::AddSpecialIFSyntax()
{
  int OldLinePos;
  int arg1,arg2;
  bool arg2isvar,AddNOT;
  string ArgText,expr;

  OldLinePos = LinePos;
  LinePos -= CommandName.length();
  ArgText = ReplaceDefine(ReadPlainText());

  if(ArgText[0]=='v'){
    if (NOTOn) ShowError(CurLine,"'!' not allowed before var.");
    arg1=Val(ArgText.substr(1));
    if(arg1<0||arg1>255)
      ShowError(CurLine,"Invalid number given or error in expression syntax.");
    else{
      SkipSpaces();
      expr = ReadExprText();
      SkipSpaces();
      ArgText = ReplaceDefine(ReadPlainText());
      arg2isvar = (ArgText[0]=='v');
      if(arg2isvar)
        arg2=Val(ArgText.substr(1));
      else
        arg2=Val(ArgText);
      if(arg2<0||arg2>255)
       ShowError(CurLine,"Invalid number given or error in expression syntax.");
      else{
        CommandNum=0;
        AddNOT = false;
        if(expr == "==")CommandNum = 0x01;  //equal
        else if(expr == "<")CommandNum = 0x03;  //less
        else if(expr == ">")CommandNum = 0x05;  //greater
        else if(expr == "!="){ CommandNum = 0x01;  AddNOT = true; } //!equal
        else if(expr == ">="){ CommandNum = 0x03;  AddNOT = true; } //!less
        else if(expr == "<="){ CommandNum = 0x05;  AddNOT = true; } //!greater
        else ShowError(CurLine,"Expression syntax error");
        if(CommandNum>0){
          if (arg2isvar)CommandNum++;
           if (AddNOT) WriteByte(0xFD);
           WriteByte(CommandNum);
           WriteByte(arg1);
           WriteByte(arg2);
           return true;
        }
      }
    }
  }//if(ArgText[0]=='v')
  else if(ArgText[0]=='f'){
    arg1 = Val(ArgText.substr(1));
    if(arg1<0||arg1>255)
      ShowError(CurLine,"Invalid number given or error in expression syntax..");
    else{
      WriteByte(0x07);  // isset
      WriteByte(arg1);
      return true;
    }
  }//if(ArgText[0]=='f')
  else LinePos = OldLinePos;
  return false;


}