case 'nano25519': {
return nano25519.verify(sig8, msg8, pub8)
}
- case 'nano25519 with bulk block verification': {
- const blocks = []
- for (let i = 0; i < 256; i++) blocks[i] = { hash: msg8, signature: sig8 }
- const verified = nano25519.verify_blocks(pub8, blocks)
- return verified.every(v => v === true)
- }
case 'NanocurrencyWeb': {
return NanocurrencyWeb.tools.verify(pub, sig, msg)
}
privateKey = random()
try {
- start = performance.now()
- publicKey = derive(privateKey, api)
- end = performance.now()
- duration = end - start
- deriveTimes[i].push(duration)
-
- start = performance.now()
- signature = sign(blockHash, privateKey, publicKey, api)
- end = performance.now()
- duration = end - start
- signTimes[i].push(duration)
-
- start = performance.now()
- if (!verify(signature, blockHash, publicKey, api)) {
- throw new Error(`invalid result\nsignature: ${signature}\nblock hash: ${blockHash}\npublic key: ${publicKey}`)
+ if (api === 'nano25519 with bulk block verification') {
+ publicKey = derive(privateKey, 'nano25519')
+ signature = sign(blockHash, privateKey, publicKey, 'nano25519')
+ const blocks = []
+ for (let i = 0; i < 256; i++) {
+ blocks[i] = { hash: blockHash, signature }
+ }
+ start = performance.now()
+ const verified = nano25519.verify_blocks(publicKey, blocks)
+ end = performance.now()
+ if (verified.some(v => v !== true)) {
+ throw new Error(`invalid result\nsignature: ${signature}\nblock hash: ${blockHash}\npublic key: ${publicKey}`)
+ }
+ duration = (end - start) / 256
+ deriveTimes[i].push(0)
+ signTimes[i].push(0)
+ verifyTimes[i].push(duration)
+ } else {
+ start = performance.now()
+ publicKey = derive(privateKey, api)
+ end = performance.now()
+ duration = end - start
+ deriveTimes[i].push(duration)
+
+ start = performance.now()
+ signature = sign(blockHash, privateKey, publicKey, api)
+ end = performance.now()
+ duration = end - start
+ signTimes[i].push(duration)
+
+ start = performance.now()
+ if (!verify(signature, blockHash, publicKey, api)) {
+ throw new Error(`invalid result\nsignature: ${signature}\nblock hash: ${blockHash}\npublic key: ${publicKey}`)
+ }
+ end = performance.now()
+ duration = end - start
+ verifyTimes[i].push(duration)
}
- end = performance.now()
- duration = end - start
- duration /= (api === 'nano25519 with bulk block verification') ? 256 : 1
- verifyTimes[i].push(duration)
} catch (err) {
document.getElementById('output').innerHTML += `Error: ${err.message}<br/>`
console.error(err)