*buflen = len;
return 1;
}
+#ifndef OPENSSL_NO_SCRYPT
+/* Currently only used by scrypt tests */
/* Parse unsigned decimal 64 bit integer value */
static int test_uint64(const char *value, uint64_t *pr)
{
}
return 1;
}
+#endif
/* Structure holding test information */
struct evp_test {
{
int type;
struct mac_data *mdat;
- if (strcmp(alg, "HMAC") == 0)
+ if (strcmp(alg, "HMAC") == 0) {
type = EVP_PKEY_HMAC;
- else if (strcmp(alg, "CMAC") == 0)
+ } else if (strcmp(alg, "CMAC") == 0) {
+#ifndef OPENSSL_NO_CMAC
type = EVP_PKEY_CMAC;
- else
+#else
+ t->skip = 1;
+ return 1;
+#endif
+ } else
return 0;
mdat = OPENSSL_malloc(sizeof(*mdat));
unsigned char *mac = NULL;
size_t mac_len;
+#ifdef OPENSSL_NO_DES
+ if (strstr(mdata->alg, "DES") != NULL) {
+ /* Skip DES */
+ err = NULL;
+ goto err;
+ }
+#endif
+
err = "MAC_PKEY_CTX_ERROR";
genctx = EVP_PKEY_CTX_new_id(mdata->type, NULL);
if (!genctx)
struct pbe_data *pdat;
int pbe_type = 0;
+ if (strcmp(alg, "scrypt") == 0) {
#ifndef OPENSSL_NO_SCRYPT
- if (strcmp(alg, "scrypt") == 0)
pbe_type = PBE_TYPE_SCRYPT;
+#else
+ t->skip = 1;
+ return 1;
#endif
- else if (strcmp(alg, "pbkdf2") == 0)
+ } else if (strcmp(alg, "pbkdf2") == 0) {
pbe_type = PBE_TYPE_PBKDF2;
- else if (strcmp(alg, "pkcs12") == 0)
+ } else if (strcmp(alg, "pkcs12") == 0) {
pbe_type = PBE_TYPE_PKCS12;
- else
+ } else {
fprintf(stderr, "Unknown pbe algorithm %s\n", alg);
+ }
pdat = OPENSSL_malloc(sizeof(*pdat));
pdat->pbe_type = pbe_type;
pdat->pass = NULL;
encode_test_run,
};
-/*
- * KDF operations: initially just TLS1 PRF but can be adapted.
- */
+/* KDF operations */
struct kdf_data {
/* Context for this operation */
EVP_PKEY_CTX_free(kdata->ctx);
}
-static int kdf_ctrl(EVP_PKEY_CTX *ctx, int op, const char *value)
-{
- unsigned char *buf = NULL;
- size_t buf_len;
- int rv = 0;
- if (test_bin(value, &buf, &buf_len) == 0)
- return 0;
- if (EVP_PKEY_CTX_ctrl(ctx, -1, -1, op, buf_len, buf) <= 0)
- goto err;
- rv = 1;
- err:
- OPENSSL_free(buf);
- return rv;
-}
-
static int kdf_test_parse(struct evp_test *t,
const char *keyword, const char *value)
{
struct kdf_data *kdata = t->data;
if (strcmp(keyword, "Output") == 0)
return test_bin(value, &kdata->output, &kdata->output_len);
- else if (strcmp(keyword, "MD") == 0) {
- const EVP_MD *md = EVP_get_digestbyname(value);
- if (md == NULL)
- return 0;
- if (EVP_PKEY_CTX_set_tls1_prf_md(kdata->ctx, md) <= 0)
- return 0;
- return 1;
- } else if (strcmp(keyword, "Secret") == 0) {
- return kdf_ctrl(kdata->ctx, EVP_PKEY_CTRL_TLS_SECRET, value);
- } else if (strncmp("Seed", keyword, 4) == 0) {
- return kdf_ctrl(kdata->ctx, EVP_PKEY_CTRL_TLS_SEED, value);
- } else if (strncmp(keyword, "Ctrl", 4) == 0)
+ if (strncmp(keyword, "Ctrl", 4) == 0)
return pkey_test_ctrl(kdata->ctx, value);
return 0;
}