X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-crypto-perf%2Fcperf_test_vector_parsing.c;h=3952632c116371fcb2f5c6fea88fc222ebe7bfae;hb=f1a7a5c5f4048e578c9271b441f302b33d73864b;hp=e0bcb20150836d4d723f887cdac0cdf91b048b39;hpb=f8be1786b1b8de697f68e9ffe2addff864783b06;p=dpdk.git diff --git a/app/test-crypto-perf/cperf_test_vector_parsing.c b/app/test-crypto-perf/cperf_test_vector_parsing.c index e0bcb20150..3952632c11 100644 --- a/app/test-crypto-perf/cperf_test_vector_parsing.c +++ b/app/test-crypto-perf/cperf_test_vector_parsing.c @@ -1,3 +1,37 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2016-2017 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifdef RTE_EXEC_ENV_BSDAPP + #define _WITH_GETLINE +#endif #include #include @@ -12,7 +46,8 @@ free_test_vector(struct cperf_test_vector *vector, struct cperf_options *opts) if (vector == NULL || opts == NULL) return -1; - rte_free(vector->iv.data); + rte_free(vector->cipher_iv.data); + rte_free(vector->auth_iv.data); rte_free(vector->aad.data); rte_free(vector->digest.data); @@ -81,15 +116,55 @@ show_test_vector(struct cperf_test_vector *test_vector) printf("\n"); } - if (test_vector->iv.data) { - printf("\niv =\n"); - for (i = 0; i < test_vector->iv.length; ++i) { + if (test_vector->aead_key.data) { + printf("\naead_key =\n"); + for (i = 0; i < test_vector->aead_key.length; ++i) { if ((i % wrap == 0) && (i != 0)) printf("\n"); - if (i == (uint32_t)(test_vector->iv.length - 1)) - printf("0x%02x", test_vector->iv.data[i]); + if (i == (uint32_t)(test_vector->aead_key.length - 1)) + printf("0x%02x", test_vector->aead_key.data[i]); else - printf("0x%02x, ", test_vector->iv.data[i]); + printf("0x%02x, ", + test_vector->aead_key.data[i]); + } + printf("\n"); + } + + if (test_vector->cipher_iv.data) { + printf("\ncipher_iv =\n"); + for (i = 0; i < test_vector->cipher_iv.length; ++i) { + if ((i % wrap == 0) && (i != 0)) + printf("\n"); + if (i == (uint32_t)(test_vector->cipher_iv.length - 1)) + printf("0x%02x", test_vector->cipher_iv.data[i]); + else + printf("0x%02x, ", test_vector->cipher_iv.data[i]); + } + printf("\n"); + } + + if (test_vector->auth_iv.data) { + printf("\nauth_iv =\n"); + for (i = 0; i < test_vector->auth_iv.length; ++i) { + if ((i % wrap == 0) && (i != 0)) + printf("\n"); + if (i == (uint32_t)(test_vector->auth_iv.length - 1)) + printf("0x%02x", test_vector->auth_iv.data[i]); + else + printf("0x%02x, ", test_vector->auth_iv.data[i]); + } + printf("\n"); + } + + if (test_vector->aead_iv.data) { + printf("\naead_iv =\n"); + for (i = 0; i < test_vector->aead_iv.length; ++i) { + if ((i % wrap == 0) && (i != 0)) + printf("\n"); + if (i == (uint32_t)(test_vector->aead_iv.length - 1)) + printf("0x%02x", test_vector->aead_iv.data[i]); + else + printf("0x%02x, ", test_vector->aead_iv.data[i]); } printf("\n"); } @@ -234,15 +309,19 @@ parse_entry(char *entry, struct cperf_test_vector *vector, uint8_t *data = NULL; char *token, *key_token; + if (entry == NULL) { + printf("Expected entry value\n"); + return -1; + } + /* get key */ token = strtok(entry, CPERF_ENTRY_DELIMITER); key_token = token; - /* get values for key */ token = strtok(NULL, CPERF_ENTRY_DELIMITER); - if (token == NULL) { - printf("Expected 'key = values' but was '%.40s'..\n", - key_token); + + if (key_token == NULL || token == NULL) { + printf("Expected 'key = values' but was '%.40s'..\n", entry); return -1; } @@ -257,12 +336,12 @@ parse_entry(char *entry, struct cperf_test_vector *vector, if (tc_found) vector->plaintext.length = data_length; else { - if (opts->buffer_sz > data_length) { + if (opts->max_buffer_size > data_length) { printf("Global plaintext shorter than " "buffer_sz\n"); return -1; } - vector->plaintext.length = opts->buffer_sz; + vector->plaintext.length = opts->max_buffer_size; } } else if (strstr(key_token, "cipher_key")) { @@ -293,19 +372,60 @@ parse_entry(char *entry, struct cperf_test_vector *vector, vector->auth_key.length = opts->auth_key_sz; } - } else if (strstr(key_token, "iv")) { - rte_free(vector->iv.data); - vector->iv.data = data; - vector->iv.phys_addr = rte_malloc_virt2phy(vector->iv.data); + } else if (strstr(key_token, "aead_key")) { + rte_free(vector->aead_key.data); + vector->aead_key.data = data; if (tc_found) - vector->iv.length = data_length; + vector->aead_key.length = data_length; + else { + if (opts->aead_key_sz > data_length) { + printf("Global aead_key shorter than " + "aead_key_sz\n"); + return -1; + } + vector->aead_key.length = opts->aead_key_sz; + } + + } else if (strstr(key_token, "cipher_iv")) { + rte_free(vector->cipher_iv.data); + vector->cipher_iv.data = data; + if (tc_found) + vector->cipher_iv.length = data_length; else { if (opts->cipher_iv_sz > data_length) { - printf("Global iv shorter than " + printf("Global cipher iv shorter than " "cipher_iv_sz\n"); return -1; } - vector->iv.length = opts->cipher_iv_sz; + vector->cipher_iv.length = opts->cipher_iv_sz; + } + + } else if (strstr(key_token, "auth_iv")) { + rte_free(vector->auth_iv.data); + vector->auth_iv.data = data; + if (tc_found) + vector->auth_iv.length = data_length; + else { + if (opts->auth_iv_sz > data_length) { + printf("Global auth iv shorter than " + "auth_iv_sz\n"); + return -1; + } + vector->auth_iv.length = opts->auth_iv_sz; + } + + } else if (strstr(key_token, "aead_iv")) { + rte_free(vector->aead_iv.data); + vector->aead_iv.data = data; + if (tc_found) + vector->aead_iv.length = data_length; + else { + if (opts->aead_iv_sz > data_length) { + printf("Global aead iv shorter than " + "aead_iv_sz\n"); + return -1; + } + vector->aead_iv.length = opts->aead_iv_sz; } } else if (strstr(key_token, "ciphertext")) { @@ -314,12 +434,12 @@ parse_entry(char *entry, struct cperf_test_vector *vector, if (tc_found) vector->ciphertext.length = data_length; else { - if (opts->buffer_sz > data_length) { + if (opts->max_buffer_size > data_length) { printf("Global ciphertext shorter than " "buffer_sz\n"); return -1; } - vector->ciphertext.length = opts->buffer_sz; + vector->ciphertext.length = opts->max_buffer_size; } } else if (strstr(key_token, "aad")) { @@ -329,12 +449,12 @@ parse_entry(char *entry, struct cperf_test_vector *vector, if (tc_found) vector->aad.length = data_length; else { - if (opts->auth_aad_sz > data_length) { + if (opts->aead_aad_sz > data_length) { printf("Global aad shorter than " - "auth_aad_sz\n"); + "aead_aad_sz\n"); return -1; } - vector->aad.length = opts->auth_aad_sz; + vector->aad.length = opts->aead_aad_sz; } } else if (strstr(key_token, "digest")) { @@ -345,12 +465,12 @@ parse_entry(char *entry, struct cperf_test_vector *vector, if (tc_found) vector->digest.length = data_length; else { - if (opts->auth_digest_sz > data_length) { + if (opts->digest_sz > data_length) { printf("Global digest shorter than " - "auth_digest_sz\n"); + "digest_sz\n"); return -1; } - vector->digest.length = opts->auth_digest_sz; + vector->digest.length = opts->digest_sz; } } else { printf("Not valid key: '%s'\n", trim_space(key_token)); @@ -491,10 +611,10 @@ cperf_test_vector_get_from_file(struct cperf_options *opts) /* other values not included in the file */ test_vector->data.cipher_offset = 0; - test_vector->data.cipher_length = opts->buffer_sz; + test_vector->data.cipher_length = opts->max_buffer_size; test_vector->data.auth_offset = 0; - test_vector->data.auth_length = opts->buffer_sz; + test_vector->data.auth_length = opts->max_buffer_size; return test_vector; }