summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPauli <pauli@openssl.org>2023-04-13 12:10:50 +1000
committerPauli <pauli@openssl.org>2023-04-26 08:01:46 +1000
commit79523d55923e7f61104cc7269131fd6a975b579f (patch)
treea2a8283644e27d9e3390dad563337bc6cc723d10 /include
parentd9b811dc01992adcc19ce400f38adc0eb7de2a0b (diff)
downloadopenssl-new-79523d55923e7f61104cc7269131fd6a975b579f.tar.gz
params: add helper functions to allocate & copy params
Added a function to allocate a buffer and copy a maching param. Added a function to allocate a buffer and concatenate all matching params. Fixes #20717 Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/20724)
Diffstat (limited to 'include')
-rw-r--r--include/internal/params.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/internal/params.h b/include/internal/params.h
new file mode 100644
index 0000000000..3fbd0cf954
--- /dev/null
+++ b/include/internal/params.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#include <stddef.h>
+#include <openssl/params.h>
+
+/*
+ * Extract the parameter into an allocated buffer.
+ * Any existing allocation in *out is cleared and freed.
+ *
+ * Returns 1 on success, 0 on failure and -1 if there are no matching params.
+ *
+ * *out and *out_len are guaranteed to be untouched if this function
+ * doesn't return success.
+ */
+int ossl_param_get1_octet_string(const OSSL_PARAM *params, const char *name,
+ unsigned char **out, size_t *out_len);
+/*
+ * Concatenate all of the matching params together.
+ * *out will point to an allocated buffer on successful return.
+ * Any existing allocation in *out is cleared and freed.
+ *
+ * Passing 0 for maxsize means unlimited size output.
+ *
+ * Returns 1 on success, 0 on failure and -1 if there are no matching params.
+ *
+ * *out and *out_len are guaranteed to be untouched if this function
+ * doesn't return success.
+ */
+int ossl_param_get1_concat_octet_string(const OSSL_PARAM *params, const char *name,
+ unsigned char **out, size_t *out_len,
+ size_t maxsize);