* @param lmskey The LMS_KEY to load the public key data into.
* @returns 1 on success, or 0 otherwise.
*/
-int ossl_lms_pubkey_from_params(const OSSL_PARAM params[], LMS_KEY *lmskey)
+int ossl_lms_pubkey_from_params(const OSSL_PARAM *pub, LMS_KEY *lmskey)
{
- const OSSL_PARAM *p = NULL;
-
- p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_PUB_KEY);
- if (p != NULL) {
- if (p->data == NULL
- || p->data_type != OSSL_PARAM_OCTET_STRING
- || !ossl_lms_pubkey_decode(p->data, p->data_size, lmskey))
+ if (pub != NULL) {
+ if (pub->data == NULL
+ || pub->data_type != OSSL_PARAM_OCTET_STRING
+ || !ossl_lms_pubkey_decode(pub->data, pub->data_size, lmskey))
return 0;
}
return 1;
int ossl_lms_key_valid(const LMS_KEY *key, int selection);
int ossl_lms_key_has(const LMS_KEY *key, int selection);
-int ossl_lms_pubkey_from_params(const OSSL_PARAM params[], LMS_KEY *lmskey);
+int ossl_lms_pubkey_from_params(const OSSL_PARAM *pub, LMS_KEY *lmskey);
int ossl_lms_pubkey_decode(const unsigned char *pub, size_t publen,
LMS_KEY *lmskey);
size_t ossl_lms_pubkey_length(const unsigned char *data, size_t datalen);
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
+{-
+use OpenSSL::paramnames qw(produce_param_decoder);
+-}
#include <openssl/core_dispatch.h>
#include <openssl/core_names.h>
#include <openssl/param_build.h>
+#include <openssl/proverr.h>
#include "crypto/lms.h"
#include "internal/param_build_set.h"
#include "prov/implementations.h"
return ossl_lms_key_equal(key1, key2, selection);
}
+{- produce_param_decoder('lms_import',
+ (['PKEY_PARAM_PUB_KEY', 'pub', 'octet_string'],
+ )); -}
+
static int lms_import(void *keydata, int selection, const OSSL_PARAM params[])
{
LMS_KEY *key = keydata;
+ struct lms_import_st p;
- if (!ossl_prov_is_running() || key == NULL)
+ if (!ossl_prov_is_running()
+ || key == NULL
+ || !lms_import_decoder(params, &p))
return 0;
if ((selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) == 0)
return 0;
- return ossl_lms_pubkey_from_params(params, key);
+ return ossl_lms_pubkey_from_params(p.pub, key);
}
-static const OSSL_PARAM lms_key_types[] = {
- OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PUB_KEY, NULL, 0),
- OSSL_PARAM_END
-};
static const OSSL_PARAM *lms_imexport_types(int selection)
{
if ((selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) != 0)
- return lms_key_types;
+ return lms_import_list;
return NULL;
}