2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
23 static int _eet_main_log_dom = -1;
25 #ifdef EET_DEFAULT_LOG_COLOR
26 #undef EET_DEFAULT_LOG_COLOR
28 #define EET_DEFAULT_LOG_COLOR EINA_COLOR_CYAN
32 #define ERR(...) EINA_LOG_DOM_ERR(_eet_main_log_dom, __VA_ARGS__)
36 #define DBG(...) EINA_LOG_DOM_DBG(_eet_main_log_dom, __VA_ARGS__)
40 #define INF(...) EINA_LOG_DOM_INFO(_eet_main_log_dom, __VA_ARGS__)
44 #define WRN(...) EINA_LOG_DOM_WARN(_eet_main_log_dom, __VA_ARGS__)
48 #define CRIT(...) EINA_LOG_DOM_CRIT(_eet_main_log_dom, __VA_ARGS__)
51 do_eet_list(const char *file)
57 ef = eet_open(file, EET_FILE_MODE_READ);
60 ERR("cannot open for reading: %s\n", file);
63 list = eet_list(ef, "*", &num);
66 for (i = 0; i < num; i++)
67 printf("%s\n",list[i]);
74 do_eet_extract(const char *file, const char *key, const char *out, const char *crypto_key)
81 ef = eet_open(file, EET_FILE_MODE_READ);
84 ERR("cannot open for reading: %s\n", file);
87 data = eet_read_cipher(ef, key, &size, crypto_key);
90 ERR("cannot read key %s\n", key);
96 ERR("cannot open %s\n", out);
99 if (fwrite(data, size, 1, f) != 1)
101 ERR("cannot write to %s\n", out);
110 do_eet_decode_dump(void *data, const char *str)
112 fputs(str, (FILE *)data);
116 do_eet_decode(const char *file, const char *key, const char *out, const char *crypto_key)
121 ef = eet_open(file, EET_FILE_MODE_READ);
124 ERR("cannot open for reading: %s\n", file);
127 f = fopen(out, "wb");
130 ERR("cannot open %s\n", out);
133 if (!eet_data_dump_cipher(ef, key, crypto_key, do_eet_decode_dump, f))
135 ERR("cannot write to %s\n", out);
143 do_eet_insert(const char *file, const char *key, const char *out, int compress, const char *crypto_key)
150 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
152 ef = eet_open(file, EET_FILE_MODE_WRITE);
155 ERR("cannot open for read+write: %s\n", file);
158 f = fopen(out, "rb");
161 ERR("cannot open %s\n", out);
164 fseek(f, 0, SEEK_END);
170 ERR("cannot allocate %i bytes\n", size);
173 if (fread(data, size, 1, f) != 1)
175 ERR("cannot read file %s\n", out);
179 eet_write_cipher(ef, key, data, size, compress, crypto_key);
185 do_eet_encode(const char *file, const char *key, const char *out, int compress, const char *crypto_key)
193 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
195 ef = eet_open(file, EET_FILE_MODE_WRITE);
198 ERR("cannot open for read+write: %s\n", file);
201 f = fopen(out, "rb");
204 ERR("cannot open %s\n", out);
207 fseek(f, 0, SEEK_END);
210 text = malloc(textlen);
213 ERR("cannot allocate %i bytes\n", size);
216 if (fread(text, textlen, 1, f) != 1)
218 ERR("cannot read file %s\n", out);
222 if (!eet_data_undump_cipher(ef, key, crypto_key, text, textlen, compress))
224 ERR("cannot parse %s\n", out);
232 do_eet_remove(const char *file, const char *key)
236 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
239 ERR("cannot open for read+write: %s\n", file);
247 do_eet_check(const char *file)
254 ef = eet_open(file, EET_FILE_MODE_READ);
257 ERR("checking signature of `%s` failed\n", file);
261 der = eet_identity_x509(ef, &der_length);
263 fprintf(stdout, "Certificate length %i.\n", der_length);
264 eet_identity_certificate_print(der, der_length, stdout);
266 eet_identity_signature(ef, &sign_length);
267 fprintf(stdout, "Signature length %i.\n", sign_length);
273 do_eet_sign(const char *file, const char *private_key, const char *public_key)
278 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
281 ERR("cannot open for read+write: %s.\n", file);
285 key = eet_identity_open(public_key, private_key, NULL);
288 ERR("cannot open key '%s:%s'.\n", public_key, private_key);
292 fprintf(stdout, "Using the following key to sign `%s`.\n", file);
293 eet_identity_print(key, stdout);
295 eet_identity_set(ef, key);
301 main(int argc, char **argv)
306 _eet_main_log_dom = eina_log_domain_register("Eet_Main",EINA_COLOR_CYAN);
307 if(_eet_main_log_dom < -1)
309 EINA_LOG_ERR("Impossible to create a log domain for eet_main.\n");
317 " eet -l FILE.EET list all keys in FILE.EET\n"
318 " eet -x FILE.EET KEY OUT-FILE [CRYPTO_KEY] extract data stored in KEY in FILE.EET and write to OUT-FILE\n"
319 " eet -d FILE.EET KEY OUT-FILE [CRYPTO_KEY] extract and decode data stored in KEY in FILE.EET and write to OUT-FILE\n"
320 " eet -i FILE.EET KEY IN-FILE COMPRESS [CRYPTO_KEY] insert data to KEY in FILE.EET from IN-FILE and if COMPRESS is 1, compress it\n"
321 " eet -e FILE.EET KEY IN-FILE COMPRESS [CRYPTO_KEY] insert and encode to KEY in FILE.EET from IN-FILE and if COMPRESS is 1, compress it\n"
322 " eet -r FILE.EET KEY remove KEY in FILE.EET\n"
323 " eet -c FILE.EET report and check the signature information of an eet file\n"
324 " eet -s FILE.EET PRIVATE_KEY PUBLIC_KEY sign FILE.EET with PRIVATE_KEY and attach PUBLIC_KEY as it's certificate\n"
329 if ((!strncmp(argv[1], "-h", 2)))
333 else if ((!strcmp(argv[1], "-l")) && (argc > 2))
335 do_eet_list(argv[2]);
337 else if ((!strcmp(argv[1], "-x")) && (argc > 4))
340 do_eet_extract(argv[2], argv[3], argv[4], argv[5]);
342 do_eet_extract(argv[2], argv[3], argv[4], NULL);
344 else if ((!strcmp(argv[1], "-d")) && (argc > 4))
347 do_eet_decode(argv[2], argv[3], argv[4], argv[5]);
349 do_eet_decode(argv[2], argv[3], argv[4], NULL);
351 else if ((!strcmp(argv[1], "-i")) && (argc > 5))
354 do_eet_insert(argv[2], argv[3], argv[4], atoi(argv[5]), argv[6]);
356 do_eet_insert(argv[2], argv[3], argv[4], atoi(argv[5]), NULL);
358 else if ((!strcmp(argv[1], "-e")) && (argc > 5))
361 do_eet_encode(argv[2], argv[3], argv[4], atoi(argv[5]), argv[6]);
363 do_eet_encode(argv[2], argv[3], argv[4], atoi(argv[5]), NULL);
365 else if ((!strcmp(argv[1], "-r")) && (argc > 3))
367 do_eet_remove(argv[2], argv[3]);
369 else if ((!strcmp(argv[1], "-c")) && (argc > 2))
371 do_eet_check(argv[2]);
373 else if ((!strcmp(argv[1], "-s")) && (argc > 4))
375 do_eet_sign(argv[2], argv[3], argv[4]);
381 eina_log_domain_unregister(_eet_main_log_dom);