]> git.codecow.com Git - nano25519.git/commitdiff
Add negative tests for validation of bad string inputs.
authorChris Duncan <chris@zoso.dev>
Mon, 6 Jul 2026 07:22:29 +0000 (00:22 -0700)
committerChris Duncan <chris@zoso.dev>
Mon, 6 Jul 2026 07:22:29 +0000 (00:22 -0700)
test.mjs

index 23325661352f2cde0f091e3701fa130df98bf0f0..3b0290ae97e25111fdf81b2e77c94255cd2602eb 100644 (file)
--- 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)