3 #endif /* ifdef HAVE_CONFIG_H */
10 #endif /* ifndef _MSC_VER */
14 #endif /* ifdef HAVE_EVIL */
18 static int _eet_main_log_dom = -1;
20 #ifdef EET_DEFAULT_LOG_COLOR
21 #undef EET_DEFAULT_LOG_COLOR
22 #endif /* ifdef EET_DEFAULT_LOG_COLOR */
23 #define EET_DEFAULT_LOG_COLOR EINA_COLOR_CYAN
26 #endif /* ifdef ERR */
27 #define ERR(...) EINA_LOG_DOM_ERR(_eet_main_log_dom, __VA_ARGS__)
30 #endif /* ifdef DBG */
31 #define DBG(...) EINA_LOG_DOM_DBG(_eet_main_log_dom, __VA_ARGS__)
34 #endif /* ifdef INF */
35 #define INF(...) EINA_LOG_DOM_INFO(_eet_main_log_dom, __VA_ARGS__)
38 #endif /* ifdef WRN */
39 #define WRN(...) EINA_LOG_DOM_WARN(_eet_main_log_dom, __VA_ARGS__)
42 #endif /* ifdef CRIT */
43 #define CRIT(...) EINA_LOG_DOM_CRIT(_eet_main_log_dom, __VA_ARGS__)
46 do_eet_list(const char * file)
52 ef = eet_open(file, EET_FILE_MODE_READ);
55 ERR("cannot open for reading: %s\n", file);
59 list = eet_list(ef, "*", &num);
62 for (i = 0; i < num; i++)
63 printf("%s\n",list[i]);
71 do_eet_extract(const char * file,
74 const char * crypto_key)
81 ef = eet_open(file, EET_FILE_MODE_READ);
84 ERR("cannot open for reading: %s\n", file);
88 data = eet_read_cipher(ef, key, &size, crypto_key);
91 ERR("cannot read key %s\n", key);
98 ERR("cannot open %s\n", out);
102 if (fwrite(data, size, 1, f) != 1)
104 ERR("cannot write to %s\n", out);
111 } /* do_eet_extract */
114 do_eet_decode_dump(void * data, const char * str)
116 fputs(str, (FILE *)data);
117 } /* do_eet_decode_dump */
120 do_eet_decode(const char * file,
123 const char * crypto_key)
128 ef = eet_open(file, EET_FILE_MODE_READ);
131 ERR("cannot open for reading: %s\n", file);
135 f = fopen(out, "wb");
138 ERR("cannot open %s\n", out);
142 if (!eet_data_dump_cipher(ef, key, crypto_key, do_eet_decode_dump, f))
144 ERR("cannot write to %s\n", out);
150 } /* do_eet_decode */
153 do_eet_insert(const char * file,
157 const char * crypto_key)
164 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
166 ef = eet_open(file, EET_FILE_MODE_WRITE);
170 ERR("cannot open for read+write: %s\n", file);
174 f = fopen(out, "rb");
177 ERR("cannot open %s\n", out);
181 fseek(f, 0, SEEK_END);
187 ERR("cannot allocate %i bytes\n", size);
191 if (fread(data, size, 1, f) != 1)
193 ERR("cannot read file %s\n", out);
198 eet_write_cipher(ef, key, data, size, compress, crypto_key);
201 } /* do_eet_insert */
204 do_eet_encode(const char * file,
208 const char * crypto_key)
216 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
218 ef = eet_open(file, EET_FILE_MODE_WRITE);
222 ERR("cannot open for read+write: %s\n", file);
226 f = fopen(out, "rb");
229 ERR("cannot open %s\n", out);
233 fseek(f, 0, SEEK_END);
236 text = malloc(textlen);
239 ERR("cannot allocate %i bytes\n", size);
243 if (fread(text, textlen, 1, f) != 1)
245 ERR("cannot read file %s\n", out);
250 if (!eet_data_undump_cipher(ef, key, crypto_key, text, textlen, compress))
252 ERR("cannot parse %s\n", out);
258 } /* do_eet_encode */
261 do_eet_remove(const char * file, const char * key)
265 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
268 ERR("cannot open for read+write: %s\n", file);
274 } /* do_eet_remove */
277 do_eet_check(const char * file)
284 ef = eet_open(file, EET_FILE_MODE_READ);
287 ERR("checking signature of `%s` failed\n", file);
291 der = eet_identity_x509(ef, &der_length);
293 fprintf(stdout, "Certificate length %i.\n", der_length);
294 eet_identity_certificate_print(der, der_length, stdout);
296 eet_identity_signature(ef, &sign_length);
297 fprintf(stdout, "Signature length %i.\n", sign_length);
303 do_eet_sign(const char * file, const char * private_key, const char * public_key)
308 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
311 ERR("cannot open for read+write: %s.\n", file);
315 key = eet_identity_open(public_key, private_key, NULL);
318 ERR("cannot open key '%s:%s'.\n", public_key, private_key);
322 fprintf(stdout, "Using the following key to sign `%s`.\n", file);
323 eet_identity_print(key, stdout);
325 eet_identity_set(ef, key);
331 main(int argc, char ** argv)
336 _eet_main_log_dom = eina_log_domain_register("Eet_Main",EINA_COLOR_CYAN);
337 if(_eet_main_log_dom < -1)
339 EINA_LOG_ERR("Impossible to create a log domain for eet_main.\n");
349 " eet -l FILE.EET list all keys in FILE.EET\n"
350 " eet -x FILE.EET KEY OUT-FILE [CRYPTO_KEY] extract data stored in KEY in FILE.EET and write to OUT-FILE\n"
351 " 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"
352 " 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"
353 " 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"
354 " eet -r FILE.EET KEY remove KEY in FILE.EET\n"
355 " eet -c FILE.EET report and check the signature information of an eet file\n"
356 " eet -s FILE.EET PRIVATE_KEY PUBLIC_KEY sign FILE.EET with PRIVATE_KEY and attach PUBLIC_KEY as it's certificate\n"
362 if ((!strncmp(argv[1], "-h", 2)))
364 else if ((!strcmp(argv[1], "-l")) && (argc > 2))
365 do_eet_list(argv[2]);
366 else if ((!strcmp(argv[1], "-x")) && (argc > 4))
369 do_eet_extract(argv[2], argv[3], argv[4], argv[5]);
371 do_eet_extract(argv[2], argv[3], argv[4], NULL);
373 else if ((!strcmp(argv[1], "-d")) && (argc > 4))
376 do_eet_decode(argv[2], argv[3], argv[4], argv[5]);
378 do_eet_decode(argv[2], argv[3], argv[4], NULL);
380 else if ((!strcmp(argv[1], "-i")) && (argc > 5))
383 do_eet_insert(argv[2], argv[3], argv[4], atoi(argv[5]), argv[6]);
385 do_eet_insert(argv[2], argv[3], argv[4], atoi(argv[5]), NULL);
387 else if ((!strcmp(argv[1], "-e")) && (argc > 5))
390 do_eet_encode(argv[2], argv[3], argv[4], atoi(argv[5]), argv[6]);
392 do_eet_encode(argv[2], argv[3], argv[4], atoi(argv[5]), NULL);
394 else if ((!strcmp(argv[1], "-r")) && (argc > 3))
395 do_eet_remove(argv[2], argv[3]);
396 else if ((!strcmp(argv[1], "-c")) && (argc > 2))
397 do_eet_check(argv[2]);
398 else if ((!strcmp(argv[1], "-s")) && (argc > 4))
399 do_eet_sign(argv[2], argv[3], argv[4]);
403 eina_log_domain_unregister(_eet_main_log_dom);