/*
*  Naamari - an AES/SHA-based manual file crypto-synchronizer for cloud transfers
*  Copyright (c) 2015-2017 Sunkware
*  Key FP = 6B6D C8E9 3438 6E9C 3D97  56E5 2CE9 A476 99EF 28F6
*
*  This program is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*  ----------------------------------------------------------------
*  WWW:       sunkware.org
*  E-mail:    sunkware@gmail.com
*  ----------------------------------------------------------------
*/

#ifndef OMENWORK_H
#define OMENWORK_H

#include "defines.h"
#include "errors.h"

#include "contextglob.h"
#include "stateglob.h"
#include "pather.h"
#include "translator.h"


namespace cryptrav
{

namespace OMEN
{


typedef struct
 {
  quint8       randomen[HASH_SIZE];
 } NomenData;


typedef struct
 {
  quint8       formatVer;

  bool         isNear;
  quint8       nearSalt[HASH_SIZE];
  qint64       nearTime;
  qint64       nearSize;

  bool         isFar;
  quint8       farSalt[HASH_SIZE];
  qint64       farTime;
  qint64       farSize;

  quint8       action;
 } CryptomenData;

#define        PACKED_CRYPTOMEN_DATA_SIZE      (1 + (1 + HASH_SIZE + 8 + 8) + (1 + HASH_SIZE + 8 + 8) + 1)


int            clearNomenData(NomenData* pNomenData);
int            readNomen(QString absoluteFilePath, NomenData* pNomenData);
int            writeNomen(QString absoluteFilePath, NomenData* pNomenData);

int            clearCryptomenData(CryptomenData* pCryptomenData);
int            readCryptomen(QString absoluteFilePath, CryptomenData* pCryptomenData);
int            writeCryptomen(QString absoluteFilePath, CryptomenData* pCryptomenData);


} // namespace "OMEN"

} // namespace "cryptrav"

#endif // OMENWORK_H
