first commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import {
|
||||
createAgentBodyHash,
|
||||
createAgentSignature,
|
||||
generateAgentSecret,
|
||||
isAgentTimestampFresh,
|
||||
stableStringifyAgentBody,
|
||||
verifyAgentSignature
|
||||
} from '../src/lib/agent-auth.js'
|
||||
|
||||
const bodyA = {
|
||||
version: '0.1.0',
|
||||
resources: {
|
||||
memory: 1024,
|
||||
cpu: 8
|
||||
},
|
||||
capabilities: ['heartbeat', 'report']
|
||||
}
|
||||
|
||||
const bodyB = {
|
||||
capabilities: ['heartbeat', 'report'],
|
||||
resources: {
|
||||
cpu: 8,
|
||||
memory: 1024
|
||||
},
|
||||
version: '0.1.0'
|
||||
}
|
||||
|
||||
assert.equal(stableStringifyAgentBody(bodyA), stableStringifyAgentBody(bodyB))
|
||||
assert.equal(createAgentBodyHash(bodyA), createAgentBodyHash(bodyB))
|
||||
|
||||
const secret = generateAgentSecret()
|
||||
const payload = {
|
||||
method: 'POST',
|
||||
path: '/api/agent/heartbeat',
|
||||
timestamp: String(Date.now()),
|
||||
nonce: 'nonce-123456',
|
||||
bodyHash: createAgentBodyHash(bodyA)
|
||||
}
|
||||
const signature = createAgentSignature(secret, payload)
|
||||
|
||||
assert.equal(verifyAgentSignature(secret, payload, signature), true)
|
||||
assert.equal(verifyAgentSignature(secret, { ...payload, path: '/api/agent/report' }, signature), false)
|
||||
assert.equal(isAgentTimestampFresh(payload.timestamp), true)
|
||||
assert.equal(isAgentTimestampFresh(String(Date.now() - 10 * 60 * 1000)), false)
|
||||
|
||||
console.log('agent-auth self-test passed')
|
||||
Reference in New Issue
Block a user