From: Chris Duncan Date: Mon, 6 Jul 2026 07:22:29 +0000 (-0700) Subject: Add negative tests for validation of bad string inputs. X-Git-Tag: v1.0.7~2 X-Git-Url: https://git.codecow.com/?a=commitdiff_plain;h=743a5a7b6b6b74b39929bc561ff2944e64e57bee;p=nano25519.git Add negative tests for validation of bad string inputs. --- 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)