#ifndef __AES_HPP__
#define __AES_HPP__

#include <stdint.h>
#include <stdlib.h>
#include <memory>

namespace NOD
{

class IAES
{
public:
    virtual ~IAES() {}
    virtual void encrypt(const uint8_t* iv, const uint8_t* inbuf, uint8_t* outbuf, size_t len)=0;
    virtual void decrypt(const uint8_t* iv, const uint8_t* inbuf, uint8_t* outbuf, size_t len)=0;
    virtual void setKey(const uint8_t* key)=0;
};

std::unique_ptr<IAES> NewAES();

}

#endif //__AES_HPP__