+ switch (argv[1][1])
+ {
+ case 'a':
+ {
+ char *p = &argv[1][2];
+ if (*p == '\0')
+ {
+ if (argc <= 2)
+ {
+ fprintf(stderr, "Option %s needs a value\n", argv[1]);
+ goto end;
+ }
+ argv++;
+ argc--;
+ p = &argv[1][0];
+ }
+ if (!strcmp(p, "aes128"))
+ cipher = EVP_aes_128_cbc();
+ else if (!strcmp(p, "aes192"))
+ cipher = EVP_aes_192_cbc();
+ else if (!strcmp(p, "aes256"))
+ cipher = EVP_aes_256_cbc();
+ else if (!strcmp(p, "tdea3") || !strcmp(p, "tdes3"))
+ {
+ cipher = EVP_des_ede3_cbc();
+ Klen_counts_keys = 1;
+ known_keylen = 8;
+ }
+ else
+ {
+ fprintf(stderr, "Unknown algorithm %s\n", p);
+ goto end;
+ }
+ }
+ break;
+ case 'g':