From f2ce003a973b2ff0d3af140c28365b05d0d7912c Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Thu, 6 Jul 2023 13:29:54 -0700 Subject: [PATCH] Add MD5 to hash worker --- README.md | 1 + hash/index.js | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ced9e0d..3e64430 100644 --- a/README.md +++ b/README.md @@ -253,6 +253,7 @@ PS> (Invoke-WebRequest https://x.y.workers.dev?algorithm=SHA-256&query=Hello%2C% Supported values are: +- `MD5` (not part of the Web Crypto API but supported by Cloudflare Workers) - `SHA-1` - `SHA-256` - `SHA-384` diff --git a/hash/index.js b/hash/index.js index 78b241f..1fa697b 100644 --- a/hash/index.js +++ b/hash/index.js @@ -7,8 +7,13 @@ export default { // Parse URLSearchParams for (const [key, value] of url.searchParams) { const normalizedKey = key.toLowerCase(); - if ((normalizedKey === 'a' || normalizedKey === 'algorithm') && /^SHA-?(1|256|384|512)$/i.test(value)) { - algorithm = value.includes('-') ? value : `SHA-${value.slice(3)}`; // Insert a '-' character if it's not present; crypto.subtle.digest() requires it. + if ((normalizedKey === 'a' || normalizedKey === 'algorithm')) { + if (/^SHA-?(1|256|384|512)$/i.test(value)) { + algorithm = value.includes('-') ? value : `SHA-${value.slice(3)}`; // Insert a '-' character if it's not present; crypto.subtle.digest() requires it. + } + else if (value.toUpperCase() === 'MD5') { + algorithm = 'MD5'; + } } else if ((normalizedKey === 'q' || normalizedKey === 'query') && value) { // Intentionally fail for falsy values because a null or empty string is also invalid query = value; @@ -17,7 +22,7 @@ export default { // Handling bad params if (algorithm === undefined) { - return new Response('Invalid algorithm provided. Provide one of the following values for the parameter "a" or "algorithm": SHA-1, SHA-256, SHA-384, or SHA-512.', { status: 400 }); + return new Response('Invalid algorithm provided. Provide one of the following values for the parameter "a" or "algorithm": MD5, SHA-1, SHA-256, SHA-384, or SHA-512.', { status: 400 }); } else if (query === undefined) { return new Response('Invalid query provided. Provide a value for the parameter "q" or "query".', { status: 400 }); -- 2.47.3