From ffdd482ad8d6026763ef6fd7a1c4f3c2b7986109 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Mon, 22 May 2023 22:48:58 -0700 Subject: [PATCH] WebCrypto: sorted njs_webcrypto_alg accoding to njs_webcrypto_alg_t. So njs_webcrypto_alg[alg->type] can be used to get the algorithm name. --- external/njs_webcrypto_module.c | 68 +++++++++++++++++---------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/external/njs_webcrypto_module.c b/external/njs_webcrypto_module.c index 0397d4ef..7d9c61fe 100644 --- a/external/njs_webcrypto_module.c +++ b/external/njs_webcrypto_module.c @@ -45,6 +45,7 @@ typedef enum { NJS_ALGORITHM_ECDH, NJS_ALGORITHM_PBKDF2, NJS_ALGORITHM_HKDF, + NJS_ALGORITHM_MAX, } njs_webcrypto_alg_t; @@ -54,6 +55,7 @@ typedef enum { NJS_HASH_SHA256, NJS_HASH_SHA384, NJS_HASH_SHA512, + NJS_HASH_MAX, } njs_webcrypto_hash_t; @@ -152,6 +154,28 @@ static njs_webcrypto_entry_t njs_webcrypto_alg[] = { #define njs_webcrypto_algorithm(type, usage_mask, fmt_mask) \ (uintptr_t) & (njs_webcrypto_algorithm_t) { type, usage_mask, fmt_mask } + { + njs_str("RSASSA-PKCS1-v1_5"), + njs_webcrypto_algorithm(NJS_ALGORITHM_RSASSA_PKCS1_v1_5, + NJS_KEY_USAGE_SIGN | + NJS_KEY_USAGE_VERIFY | + NJS_KEY_USAGE_GENERATE_KEY, + NJS_KEY_FORMAT_PKCS8 | + NJS_KEY_FORMAT_SPKI | + NJS_KEY_FORMAT_JWK) + }, + + { + njs_str("RSA-PSS"), + njs_webcrypto_algorithm(NJS_ALGORITHM_RSA_PSS, + NJS_KEY_USAGE_SIGN | + NJS_KEY_USAGE_VERIFY | + NJS_KEY_USAGE_GENERATE_KEY, + NJS_KEY_FORMAT_PKCS8 | + NJS_KEY_FORMAT_SPKI | + NJS_KEY_FORMAT_JWK) + }, + { njs_str("RSA-OAEP"), njs_webcrypto_algorithm(NJS_ALGORITHM_RSA_OAEP, @@ -165,6 +189,16 @@ static njs_webcrypto_entry_t njs_webcrypto_alg[] = { NJS_KEY_FORMAT_JWK) }, + { + njs_str("HMAC"), + njs_webcrypto_algorithm(NJS_ALGORITHM_HMAC, + NJS_KEY_USAGE_GENERATE_KEY | + NJS_KEY_USAGE_SIGN | + NJS_KEY_USAGE_VERIFY, + NJS_KEY_FORMAT_RAW | + NJS_KEY_FORMAT_JWK) + }, + { njs_str("AES-GCM"), njs_webcrypto_algorithm(NJS_ALGORITHM_AES_GCM, @@ -201,28 +235,6 @@ static njs_webcrypto_entry_t njs_webcrypto_alg[] = { NJS_KEY_FORMAT_JWK) }, - { - njs_str("RSASSA-PKCS1-v1_5"), - njs_webcrypto_algorithm(NJS_ALGORITHM_RSASSA_PKCS1_v1_5, - NJS_KEY_USAGE_SIGN | - NJS_KEY_USAGE_VERIFY | - NJS_KEY_USAGE_GENERATE_KEY, - NJS_KEY_FORMAT_PKCS8 | - NJS_KEY_FORMAT_SPKI | - NJS_KEY_FORMAT_JWK) - }, - - { - njs_str("RSA-PSS"), - njs_webcrypto_algorithm(NJS_ALGORITHM_RSA_PSS, - NJS_KEY_USAGE_SIGN | - NJS_KEY_USAGE_VERIFY | - NJS_KEY_USAGE_GENERATE_KEY, - NJS_KEY_FORMAT_PKCS8 | - NJS_KEY_FORMAT_SPKI | - NJS_KEY_FORMAT_JWK) - }, - { njs_str("ECDSA"), njs_webcrypto_algorithm(NJS_ALGORITHM_ECDSA, @@ -261,16 +273,6 @@ static njs_webcrypto_entry_t njs_webcrypto_alg[] = { NJS_KEY_FORMAT_RAW) }, - { - njs_str("HMAC"), - njs_webcrypto_algorithm(NJS_ALGORITHM_HMAC, - NJS_KEY_USAGE_GENERATE_KEY | - NJS_KEY_USAGE_SIGN | - NJS_KEY_USAGE_VERIFY, - NJS_KEY_FORMAT_RAW | - NJS_KEY_FORMAT_JWK) - }, - { njs_null_str, 0 @@ -335,7 +337,7 @@ static njs_webcrypto_entry_t njs_webcrypto_alg_hash[] = { static njs_str_t - njs_webcrypto_alg_name[NJS_ALGORITHM_HMAC + 1][NJS_HASH_SHA512 + 1] = { + njs_webcrypto_alg_name[NJS_ALGORITHM_HMAC + 1][NJS_HASH_MAX] = { { njs_null_str, njs_str("RS1"), -- 2.47.3