Make LMS public key export part of public key api
Signed-off-by: Raef Coles <raef.coles@arm.com>
diff --git a/library/lmots.c b/library/lmots.c
index 9168ef1..bb4326e 100644
--- a/library/lmots.c
+++ b/library/lmots.c
@@ -440,6 +440,43 @@
return( 0 );
}
+int mbedtls_lmots_export_public_key( const mbedtls_lmots_public_t *ctx,
+ unsigned char *key, size_t key_size,
+ size_t *key_len )
+{
+ if( key_size < MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type) )
+ {
+ return( MBEDTLS_ERR_LMS_BUFFER_TOO_SMALL );
+ }
+
+ if( ! ctx->have_public_key )
+ {
+ return( MBEDTLS_ERR_LMS_BAD_INPUT_DATA );
+ }
+
+ mbedtls_lms_unsigned_int_to_network_bytes( ctx->params.type,
+ MBEDTLS_LMOTS_TYPE_LEN,
+ key + MBEDTLS_LMOTS_SIG_TYPE_OFFSET );
+
+ memcpy( key + PUBLIC_KEY_I_KEY_ID_OFFSET,
+ ctx->params.I_key_identifier,
+ MBEDTLS_LMOTS_I_KEY_ID_LEN );
+
+ memcpy( key + PUBLIC_KEY_Q_LEAF_ID_OFFSET,
+ ctx->params.q_leaf_identifier,
+ MBEDTLS_LMOTS_Q_LEAF_ID_LEN );
+
+ memcpy( key + PUBLIC_KEY_KEY_HASH_OFFSET, ctx->public_key,
+ MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type) );
+
+ if( key_len != NULL )
+ {
+ *key_len = MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type);
+ }
+
+ return( 0 );
+}
+
int mbedtls_lmots_calculate_public_key_candidate( const mbedtls_lmots_parameters_t *params,
const unsigned char *msg,
size_t msg_size,
@@ -680,44 +717,6 @@
return( ret );
}
-
-int mbedtls_lmots_export_public_key( const mbedtls_lmots_public_t *ctx,
- unsigned char *key, size_t key_size,
- size_t *key_len )
-{
- if( key_size < MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type) )
- {
- return( MBEDTLS_ERR_LMS_BUFFER_TOO_SMALL );
- }
-
- if( ! ctx->have_public_key )
- {
- return( MBEDTLS_ERR_LMS_BAD_INPUT_DATA );
- }
-
- mbedtls_lms_unsigned_int_to_network_bytes( ctx->params.type,
- MBEDTLS_LMOTS_TYPE_LEN,
- key + MBEDTLS_LMOTS_SIG_TYPE_OFFSET );
-
- memcpy( key + PUBLIC_KEY_I_KEY_ID_OFFSET,
- ctx->params.I_key_identifier,
- MBEDTLS_LMOTS_I_KEY_ID_LEN );
-
- memcpy( key + PUBLIC_KEY_Q_LEAF_ID_OFFSET,
- ctx->params.q_leaf_identifier,
- MBEDTLS_LMOTS_Q_LEAF_ID_LEN );
-
- memcpy( key + PUBLIC_KEY_KEY_HASH_OFFSET, ctx->public_key,
- MBEDTLS_LMOTS_N_HASH_LEN(ctx->params.type) );
-
- if( key_len != NULL )
- {
- *key_len = MBEDTLS_LMOTS_PUBLIC_KEY_LEN(ctx->params.type);
- }
-
- return( 0 );
-}
-
int mbedtls_lmots_sign( mbedtls_lmots_private_t *ctx,
int (*f_rng)(void *, unsigned char *, size_t),
void *p_rng, const unsigned char *msg, size_t msg_size,