From 743a5a7b6b6b74b39929bc561ff2944e64e57bee Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 6 Jul 2026 00:22:29 -0700 Subject: [PATCH] Add negative tests for validation of bad string inputs. --- test.mjs | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/test.mjs b/test.mjs index 2332566..3b0290a 100644 --- a/test.mjs +++ b/test.mjs @@ -19,6 +19,67 @@ function check (name, test) { let result, test, passes = 0, failures = 0 +// Check string input validation +try { + result = derive(NANO_ORG_VECTOR.privateKey + '00') + result = false +} catch (err) { + if (err != null && typeof err === 'object' && 'message' in err) { + result = err.message === `Invalid hexadecimal length 66 for private key ${NANO_ORG_VECTOR.privateKey + '00'}` + } else { + result = false + } +} +test = result === true +check(`private key string too long ${NANO_ORG_VECTOR.privateKey + '00'}`, test) +passes += +test +failures += +!test + +try { + result = derive(NANO_ORG_VECTOR.privateKey.slice(-1) + 'z') + result = false +} catch (err) { + if (err != null && typeof err === 'object' && 'message' in err) { + result = err.message === `Invalid hexadecimal characters in private key ${NANO_ORG_VECTOR.privateKey.slice(-1) + 'z'}` + } else { + result = false + } +} +test = result === true +check(`private key string invalid character ${NANO_ORG_VECTOR.privateKey.slice(-1) + 'z'}`, test) +passes += +test +failures += +!test + +try { + result = sign(NANO_ORG_VECTOR.blockHash + '0', NANO_ORG_VECTOR.secretKey) + result = false +} catch (err) { + if (err != null && typeof err === 'object' && 'message' in err) { + result = err.message === `Invalid hexadecimal length 65 for message ${NANO_ORG_VECTOR.blockHash + '0'}` + } else { + result = false + } +} +test = result === true +check(`sign message odd character count ${NANO_ORG_VECTOR.blockHash + '0'}`, test) +passes += +test +failures += +!test + +try { + result = sign('1'.repeat(65538), NANO_ORG_VECTOR.secretKey) + result = false +} catch (err) { + if (err != null && typeof err === 'object' && 'message' in err) { + result = err.message === `Invalid hexadecimal length 65538 for message ${'1'.repeat(65538)}` + } else { + result = false + } +} +test = result === true +check(`sign message too long (65538 '1's)`, test) +passes += +test +failures += +!test + // Check combined imports result = await Nano25519.deriveAsync(NANO_ORG_VECTOR.privateKeyBytes) console.log(`RESULT`, result) -- 2.52.0