@@ -258,30 +258,82 @@ static int wp_ecx_digest_verify_init(wp_EcxSigCtx *ctx, const char *mdName,
258258}
259259
260260/**
261- * Put DER encoding of the ECX signature algorithm in the parameter object.
261+ * Put DER encoding of the Ed25519 signature algorithm in the parameter object.
262262 *
263263 * @param [in] ctx ECX signature context object.
264264 * @param [in] p Parameter object.
265265 * @return 1 on success.
266266 * @return 0 on failure.
267267 */
268- static int wp_ecx_get_alg_id (wp_EcxSigCtx * ctx , OSSL_PARAM * p )
268+ static int wp_ed25519_get_alg_id (wp_EcxSigCtx * ctx , OSSL_PARAM * p )
269269{
270- /* TODO: implement */
270+ /* Ed25519 Algorithm Id: SEQ OBJ 2b 65 70 */
271+ static const byte ed25519AlgId [] = {
272+ 0x30 , 0x05 , 0x06 , 0x03 , 0x2b , 0x65 , 0x70 ,
273+ };
274+
275+ (void )ctx ;
276+
277+ return OSSL_PARAM_set_octet_string (p , ed25519AlgId , sizeof (ed25519AlgId ));
278+ }
279+
280+ /**
281+ * Put data from Ed25519 signture context object into parameter objects.
282+ *
283+ * @param [in] ctx ECX signature context object.
284+ * @param [in] params Array of parameter objects.
285+ * @return 1 on success.
286+ * @return 0 on failure.
287+ */
288+ static int wp_ed25519_get_ctx_params (wp_EcxSigCtx * ctx , OSSL_PARAM * params )
289+ {
290+ int ok = 1 ;
291+ OSSL_PARAM * p ;
292+
293+ if (ctx == NULL ) {
294+ ok = 0 ;
295+ }
296+
297+ if (ok ) {
298+ p = OSSL_PARAM_locate (params , OSSL_SIGNATURE_PARAM_ALGORITHM_ID );
299+ if (p != NULL ) {
300+ ok = wp_ed25519_get_alg_id (ctx , p );
301+ }
302+ }
303+
304+ WOLFPROV_LEAVE (WP_LOG_KE , __FILE__ ":" WOLFPROV_STRINGIZE (__LINE__ ), ok );
305+ return ok ;
306+ }
307+
308+ /**
309+ * Put DER encoding of the Ed448 signature algorithm in the parameter object.
310+ *
311+ * @param [in] ctx ECX signature context object.
312+ * @param [in] p Parameter object.
313+ * @return 1 on success.
314+ * @return 0 on failure.
315+ */
316+ static int wp_ed448_get_alg_id (wp_EcxSigCtx * ctx , OSSL_PARAM * p )
317+ {
318+ /* Ed448 Algorithm Id: SEQ OBJ 2b 65 71 */
319+ static const byte ed448AlgId [] = {
320+ 0x30 , 0x05 , 0x06 , 0x03 , 0x2b , 0x65 , 0x71 ,
321+ };
322+
271323 (void )ctx ;
272- ( void ) p ;
273- return 0 ;
324+
325+ return OSSL_PARAM_set_octet_string ( p , ed448AlgId , sizeof ( ed448AlgId )) ;
274326}
275327
276328/**
277- * Put data from ECX signture context object into parameter objects.
329+ * Put data from Ed448 signture context object into parameter objects.
278330 *
279331 * @param [in] ctx ECX signature context object.
280332 * @param [in] params Array of parameter objects.
281333 * @return 1 on success.
282334 * @return 0 on failure.
283335 */
284- static int wp_ecx_get_ctx_params (wp_EcxSigCtx * ctx , OSSL_PARAM * params )
336+ static int wp_ed448_get_ctx_params (wp_EcxSigCtx * ctx , OSSL_PARAM * params )
285337{
286338 int ok = 1 ;
287339 OSSL_PARAM * p ;
@@ -293,7 +345,7 @@ static int wp_ecx_get_ctx_params(wp_EcxSigCtx *ctx, OSSL_PARAM *params)
293345 if (ok ) {
294346 p = OSSL_PARAM_locate (params , OSSL_SIGNATURE_PARAM_ALGORITHM_ID );
295347 if (p != NULL ) {
296- ok = wp_ecx_get_alg_id (ctx , p );
348+ ok = wp_ed448_get_alg_id (ctx , p );
297349 }
298350 }
299351
@@ -458,7 +510,7 @@ const OSSL_DISPATCH wp_ed25519_signature_functions[] = {
458510 { OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_INIT ,
459511 (DFUNC )wp_ecx_digest_verify_init },
460512 { OSSL_FUNC_SIGNATURE_DIGEST_VERIFY , (DFUNC )wp_ed25519_digest_verify },
461- { OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS , (DFUNC )wp_ecx_get_ctx_params },
513+ { OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS , (DFUNC )wp_ed25519_get_ctx_params },
462514 { OSSL_FUNC_SIGNATURE_GETTABLE_CTX_PARAMS ,
463515 (DFUNC )wp_ecx_gettable_ctx_params },
464516 { 0 , NULL }
@@ -606,7 +658,7 @@ const OSSL_DISPATCH wp_ed448_signature_functions[] = {
606658 { OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_INIT ,
607659 (DFUNC )wp_ecx_digest_verify_init },
608660 { OSSL_FUNC_SIGNATURE_DIGEST_VERIFY , (DFUNC )wp_ed448_digest_verify },
609- { OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS , (DFUNC )wp_ecx_get_ctx_params },
661+ { OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS , (DFUNC )wp_ed448_get_ctx_params },
610662 { OSSL_FUNC_SIGNATURE_GETTABLE_CTX_PARAMS ,
611663 (DFUNC )wp_ecx_gettable_ctx_params },
612664 { 0 , NULL }
0 commit comments