{
return (ctx->flags & flags);
}
+
+int EVP_str2ctrl(int (*cb)(void *ctx, int cmd, void *buf, size_t buflen),
+ void *ctx, int cmd, const char *value)
+{
+ size_t len;
+
+ len = strlen(value);
+ if (len > INT_MAX)
+ return -1;
+ return cb(ctx, cmd, (void *)value, len);
+}
+
+int EVP_hex2ctrl(int (*cb)(void *ctx, int cmd, void *buf, size_t buflen),
+ void *ctx, int cmd, const char *hex)
+{
+ unsigned char *bin;
+ long binlen;
+ int rv = -1;
+
+ bin = OPENSSL_hexstr2buf(hex, &binlen);
+ if (bin == NULL)
+ return 0;
+ if (binlen <= INT_MAX)
+ rv = cb(ctx, cmd, bin, binlen);
+ OPENSSL_free(bin);
+ return rv;
+}
EVP_MD_CTX *mctx));
void EVP_add_alg_module(void);
+/*
+ * Convenient helper functions to transfer string based controls.
+ * The callback gets called with the parsed value.
+ */
+int EVP_str2ctrl(int (*cb)(void *ctx, int cmd, void *buf, size_t buflen),
+ void *ctx, int cmd, const char *value);
+int EVP_hex2ctrl(int (*cb)(void *ctx, int cmd, void *buf, size_t buflen),
+ void *ctx, int cmd, const char *hex);
# ifdef __cplusplus
}
EVP_get_macbyname 4549 1_1_2 EXIST::FUNCTION:
EVP_MAC_do_all 4550 1_1_2 EXIST::FUNCTION:
EVP_MAC_do_all_sorted 4551 1_1_2 EXIST::FUNCTION:
+EVP_str2ctrl 4552 1_1_2 EXIST::FUNCTION:
+EVP_hex2ctrl 4553 1_1_2 EXIST::FUNCTION: