MCPcopy Create free account
hub / github.com/cryptii/cryptii / createDigest

Method createDigest

src/Encoder/Hash.js:99–135  ·  view source on GitHub ↗

* Creates message digest using given algorithm. * @protected * @param {string} name Algorithm name * @param {Uint8Array} message Message bytes * @return {Promise}

(name, message)

Source from the content-addressed store, hash-verified

97 * @return {Promise}
98 */
99 createDigest (name, message) {
100 const algorithm = algorithms.find(algorithm => algorithm.name === name)
101
102 switch (name) {
103 case 'md5':
104 return new Promise(resolve => resolve(md5(message)))
105 }
106
107 if (EnvUtil.isNode()) {
108 // Create message digest using Node Crypto async
109 return new Promise((resolve, reject) => {
110 const resultBuffer =
111 nodeCrypto.createHash(algorithm.nodeAlgorithm)
112 .update(global.Buffer.from(message))
113 .digest()
114 resolve(new Uint8Array(resultBuffer))
115 })
116 } else {
117 // Get crypto subtle instance
118 const crypto = window.crypto || window.msCrypto
119 const cryptoSubtle = crypto.subtle || crypto.webkitSubtle
120
121 // Create message digest using Web Crypto Api
122 let result = cryptoSubtle.digest(algorithm.browserAlgorithm, message)
123
124 // IE11 exception
125 if (result.oncomplete !== undefined) {
126 // Wrap IE11 CryptoOperation object in a promise
127 result = new Promise((resolve, reject) => {
128 result.oncomplete = resolve.bind(this, result.result)
129 result.onerror = reject
130 })
131 }
132
133 return result.then(buffer => new Uint8Array(buffer))
134 }
135 }
136
137 /**
138 * Returns algorithm objects available in the current environment.

Callers 1

performEncodeMethod · 0.95

Calls 3

md5Function · 0.85
isNodeMethod · 0.80
updateMethod · 0.45

Tested by

no test coverage detected