UNPKG

hsms

Version:

Hardware Security Module simulator

78 lines (58 loc) 5.48 kB
import test from 'ava'; import HSM from '../hsm' var test_lmk = 'DEAFBEEDEAFBEEDEAFBEEDEAFBEEDEAF' var hsm = new HSM(test_lmk) test('should assign LMK', t => { t.is(hsm.LMK, test_lmk) }); test('should get 6-digit LMK check value by default', t => { t.is(hsm.getKeyCheckValue(test_lmk), 'F4EDC8') }); test('should get arbitrary-length LMK check value', t => { t.is(hsm.getKeyCheckValue(test_lmk, 16), 'F4EDC8DEB67F6E28') }); test('should get diagnostics data', t => { var response = hsm.getDiagnosticsData() t.is(response.get('Response Code'), 'ND') t.is(response.get('Error Code'), '00') t.is(response.get('LMK Check Value'), 'F4EDC8DEB67F6E28') t.is(response.get('Firmware Version'), '0007-E000') }); test('should be able to get proper empty message length', t => { t.is(hsm.getOutgoingMessageLength(''), '\x00\x00') }); test('should return the length for message.len === 10', t => { t.is(hsm.getOutgoingMessageLength('0123456789'), '\x00\x0a') }); test('should return the length for message.len === 16', t => { t.is(hsm.getOutgoingMessageLength('0123456789abcdef'), '\x00\x10') }); test('should return the length for message.len === 255', t => { t.is(hsm.getOutgoingMessageLength('123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'), '\x00\xff') }); test('should return the length for message.len === 256', t => { t.is(hsm.getOutgoingMessageLength('0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'), '\x01\x00') }); test('should return the length for message.len === 2636', t => { t.is(hsm.getOutgoingMessageLength('0123456789abcdef012340123456789abcdef01234567889abcdef01289abcdef01289abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567893456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567893456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567899abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef567889abcdef01289abcdef01289abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567893456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567893456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234567899abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'), '\x0a\x4c') }); test('should build data string from response object', t => { var response = new Map() response.set('Response Code', 'ND'); response.set('Error Code','00'); response.set('LMK Check Value', 'F4EDC8DEB67F6E28'); response.set('Firmware Version', '0007-E000'); t.is(hsm.build(response), '\x00\x1dND00F4EDC8DEB67F6E280007-E000') }); test('should build data string from response object with header', t => { var response = new Map() response.set('Response Code', 'ND'); response.set('Error Code','00'); response.set('LMK Check Value', 'F4EDC8DEB67F6E28'); response.set('Firmware Version', '0007-E000'); hsm.header = 'SSSS' t.is(hsm.build(response), '\x00\x21SSSSND00F4EDC8DEB67F6E280007-E000') }); test('getResponse(): should return null to unknown command', t => { t.is(hsm.getResponse('XZ'), null); })