Loading crypto/evp/pmeth_lib.c +29 −0 Original line number Diff line number Diff line Loading @@ -63,8 +63,10 @@ # include <openssl/engine.h> #endif #include <openssl/evp.h> #include <openssl/x509v3.h> #include "internal/asn1_int.h" #include "internal/evp_int.h" #include "internal/numbers.h" typedef int sk_cmp_fn_type(const char *const *a, const char *const *b); Loading Loading @@ -381,6 +383,33 @@ int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, return ctx->pmeth->ctrl_str(ctx, name, value); } /* Utility functions to send a string of hex string to a ctrl */ int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str) { size_t len; len = strlen(str); if (len > INT_MAX) return -1; return ctx->pmeth->ctrl(ctx, cmd, len, (void *)str); } int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex) { unsigned char *bin; long binlen; int rv = -1; bin = string_to_hex(hex, &binlen); if (bin == NULL) return 0; if (binlen <= INT_MAX) rv = ctx->pmeth->ctrl(ctx, cmd, binlen, bin); OPENSSL_free(bin); return rv; } int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx) { return ctx->operation; Loading include/openssl/evp.h +3 −0 Original line number Diff line number Diff line Loading @@ -1224,6 +1224,9 @@ int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value); int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); Loading Loading
crypto/evp/pmeth_lib.c +29 −0 Original line number Diff line number Diff line Loading @@ -63,8 +63,10 @@ # include <openssl/engine.h> #endif #include <openssl/evp.h> #include <openssl/x509v3.h> #include "internal/asn1_int.h" #include "internal/evp_int.h" #include "internal/numbers.h" typedef int sk_cmp_fn_type(const char *const *a, const char *const *b); Loading Loading @@ -381,6 +383,33 @@ int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, return ctx->pmeth->ctrl_str(ctx, name, value); } /* Utility functions to send a string of hex string to a ctrl */ int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str) { size_t len; len = strlen(str); if (len > INT_MAX) return -1; return ctx->pmeth->ctrl(ctx, cmd, len, (void *)str); } int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex) { unsigned char *bin; long binlen; int rv = -1; bin = string_to_hex(hex, &binlen); if (bin == NULL) return 0; if (binlen <= INT_MAX) rv = ctx->pmeth->ctrl(ctx, cmd, binlen, bin); OPENSSL_free(bin); return rv; } int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx) { return ctx->operation; Loading
include/openssl/evp.h +3 −0 Original line number Diff line number Diff line Loading @@ -1224,6 +1224,9 @@ int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value); int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); Loading