-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcrypto.h
93 lines (56 loc) · 1.86 KB
/
crypto.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#ifndef CRYPTO_H
#define CRYPTO_H
#include <vector>
#include <string>
#include <cryptopp/aes.h>
using namespace std;
using namespace CryptoPP;
class Modi_info
{
private:
vector<byte> new_meta;
vector<byte> ins_list;
vector<byte> rep_list;
public:
int del_index;
int del_len;
int ins_index;
int rep_index;
Modi_info();
void update_del_data(int len);
void update_ins_data(int index, vector<byte> list);
void update_ins_data(int index, byte* block);
void update_ins_data(int index, byte one);
void update_rep_data(int index, byte* block);
void update_metadata(vector<byte> metadata);
};
vector<byte> metadata_gen(int len);
vector<byte> metadata_enc(vector<byte> metadata, byte* counter, byte* key, byte* nonce);
vector<byte> metadata_dec(vector<byte> meta_cipher, byte* key, byte* nonce, byte* rec_ctr);
vector<byte> encryption(byte* nonce, byte* counter, string plaintext, byte* key, byte* back_counter);
vector<byte> decryption(byte* nonce, vector<byte> bundle, byte* key, vector<byte> metadata);
vector<int> bundle_list_gen(vector<byte> metadata);
int search_block_index(vector<byte> metadata, int index);
int search_real_index(vector<byte> metadata, int index);
int search_counter_block(vector<byte> metadata, int index);
byte* find_ctr(byte* counter, int num);
class bundled_CTR
{
private:
vector<byte> main_data;
vector<byte> meta_data;
byte key[AES::BLOCKSIZE];
byte nonce[AES::BLOCKSIZE/2];
public:
bundled_CTR(byte* key, byte* nonce);
bundled_CTR(vector<byte> data, vector<byte> meta, byte* key, byte* nonce);
~bundled_CTR();
vector<byte> print_data();
vector<byte> print_meta();
Modi_info Insertion(string text, int index);
Modi_info Deletion(int del_len, int index);
Modi_info Replacement(string text, int index);
int Fragcheck(vector<int> bundle_list, int range, int num);
void Defrag();
};
#endif