Gazebo_simulation-Frontend/node_modules/@trust/webcrypto/test/algorithms/SHASpec.js
2020-12-21 10:29:31 -05:00

114 lines
3.7 KiB
JavaScript

/**
* Test dependencies
*/
const chai = require('chai')
/**
* Assertions
*/
chai.should()
const expect = chai.expect
/**
* Code under test
*/
const {TextEncoder} = require('text-encoding')
const KeyAlgorithm = require('../../src/dictionaries/KeyAlgorithm')
const ShaKeyAlgorithm = require('../../src/dictionaries/ShaKeyAlgorithm')
const SHA = require('../../src/algorithms/SHA')
const OperationError = require('../../src/errors/OperationError')
/**
* Tests
*/
describe('SHA', () => {
describe('dictionaries getter', () => {
it('should return an array', () => {
SHA.dictionaries.should.eql([
KeyAlgorithm,
ShaKeyAlgorithm
])
})
})
describe('members getter', () => {
it('should return an object', () => {
SHA.members.should.eql({})
})
})
describe('digest', () => {
it('should return an ArrayBuffer', () => {
let algorithm = { name: 'SHA-256' }
let data = new TextEncoder().encode('return an ArrayBuffer')
let sha = new SHA(algorithm)
let result = sha.digest(algorithm, data)
result.should.be.instanceof(ArrayBuffer)
})
it('should return a SHA-1 digest', () => {
let algorithm = { name: 'SHA-1' }
let data = new TextEncoder().encode('created with webcrypto in Chrome')
let digest = new Uint8Array([
240, 245, 162, 97, 158, 225, 111, 59, 198, 40,
103, 60, 84, 159, 139, 205, 10, 116, 39, 41
])
let sha = new SHA(algorithm)
let result = sha.digest(algorithm, data)
Buffer.from(result).should.eql(Buffer.from(digest.buffer))
})
it('should return a SHA-256 digest', () => {
let algorithm = { name: 'SHA-256' }
let data = new TextEncoder().encode('created with webcrypto in Chrome')
let digest = new Uint8Array([
34, 103, 130, 78, 94, 197, 88, 55, 100, 33, 101,
214, 153, 38, 251, 0, 246, 42, 150, 222, 243, 57,
184, 244, 74, 187, 55, 10, 206, 17, 146, 65
])
let sha = new SHA(algorithm)
let result = sha.digest(algorithm, data)
Buffer.from(result).should.eql(Buffer.from(digest.buffer))
})
it('should return a SHA-384 digest', () => {
let algorithm = { name: 'SHA-384' }
let data = new TextEncoder().encode('created with webcrypto in Chrome')
let digest = new Uint8Array([
114, 126, 90, 78, 53, 164, 76, 208, 239, 167, 250, 77,
174, 115, 146, 12, 35, 96, 15, 73, 222, 48, 186, 102,
200, 91, 124, 153, 232, 76, 252, 143, 50, 251, 81, 152,
45, 189, 41, 167, 139, 29, 52, 9, 140, 197, 5, 238
])
let sha = new SHA(algorithm)
let result = sha.digest(algorithm, data)
Buffer.from(result).should.eql(Buffer.from(digest.buffer))
})
it('should return a SHA-512 digest', () => {
let algorithm = { name: 'SHA-512' }
let data = new TextEncoder().encode('created with webcrypto in Chrome')
let digest = new Uint8Array([
101, 55, 12, 162, 223, 251, 198, 26, 154, 74, 173, 61,
47, 45, 191, 105, 49, 36, 189, 141, 96, 145, 253, 102,
28, 145, 34, 244, 192, 232, 147, 88, 251, 73, 145, 241,
204, 213, 77, 129, 119, 107, 197, 94, 204, 57, 20, 153,
181, 113, 113, 50, 249, 134, 126, 99, 254, 190, 84, 124,
180, 216, 176, 112
])
let sha = new SHA(algorithm)
let result = sha.digest(algorithm, data)
Buffer.from(result).should.eql(Buffer.from(digest.buffer))
})
it('should throw an OperationError with unknown algorithm', () => {
let algorithm = { name: 'SHA-UNKNOWN' }
let data = new TextEncoder().encode('I am undigestable')
let sha = new SHA(algorithm)
expect(() => {
sha.digest(algorithm, data)
}).to.throw('SHA-UNKNOWN is not a supported algorithm')
})
})
})