Browse Source

recent aesgcm versions have shorter iv/key strings

Steffen Jaeckel 5 years ago
parent
commit
98dd1df545
1 changed files with 5 additions and 3 deletions
  1. 5 3
      demos/aesgcm.c

+ 5 - 3
demos/aesgcm.c

@@ -97,6 +97,7 @@ int main(int argc, char **argv)
    uint8_t keybuf[48] = {0};
    uint8_t keybuf[48] = {0};
    char *out = NULL;
    char *out = NULL;
    const char *mode, *in_file, *out_file, *key_string;
    const char *mode, *in_file, *out_file, *key_string;
+   unsigned long ivlen;
 
 
    if (argc < 5) die(__LINE__);
    if (argc < 5) die(__LINE__);
 
 
@@ -113,9 +114,9 @@ int main(int argc, char **argv)
    if (fsize(in_file) <= 0) die(__LINE__);
    if (fsize(in_file) <= 0) die(__LINE__);
 
 
    keylen = XSTRLEN(key_string);
    keylen = XSTRLEN(key_string);
-   if (keylen != 96) die(__LINE__);
+   if (keylen != 88 && keylen != 96) die(__LINE__);
 
 
-   scan_hex(key_string, keybuf, sizeof(keybuf));
+   scan_hex(key_string, keybuf, keylen/2);
 
 
    register_all_ciphers();
    register_all_ciphers();
 
 
@@ -125,7 +126,8 @@ int main(int argc, char **argv)
       goto cleanup;
       goto cleanup;
    }
    }
    close(tmp);
    close(tmp);
-   if((err = gcm_file(find_cipher("aes"), &keybuf[16], 32, keybuf, 16, NULL, 0, in_file, out, 16, direction, &res)) != CRYPT_OK) {
+   ivlen = keylen/2 - 32;
+   if((err = gcm_file(find_cipher("aes"), &keybuf[ivlen], 32, keybuf, ivlen, NULL, 0, in_file, out, 16, direction, &res)) != CRYPT_OK) {
       fprintf(stderr, "boooh %s\n", error_to_string(err));
       fprintf(stderr, "boooh %s\n", error_to_string(err));
       ret = __LINE__;
       ret = __LINE__;
       goto cleanup;
       goto cleanup;