mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-01 05:31:16 +00:00
Crypto Services (utils): Support for SHA256-512 (+ fix typo)
This commit is contained in:
@@ -76,36 +76,6 @@ this.CryptoUtils = {
|
||||
hasher.update(bytes, bytes.length);
|
||||
},
|
||||
|
||||
/**
|
||||
* UTF-8 encode a message and perform a SHA-1 over it.
|
||||
*
|
||||
* @param message
|
||||
* (string) Buffer to perform operation on. Should be a JS string.
|
||||
* It is possible to pass in a string representing an array
|
||||
* of bytes. But, you probably don't want to UTF-8 encode
|
||||
* such data and thus should not be using this function.
|
||||
*
|
||||
* @return string
|
||||
* Raw bytes constituting SHA-1 hash. Value is a JS string. Each
|
||||
* character is the byte value for that offset. Returned string
|
||||
* always has .length == 20.
|
||||
*/
|
||||
UTF8AndSHA1: function UTF8AndSHA1(message) {
|
||||
let hasher = Cc["@mozilla.org/security/hash;1"]
|
||||
.createInstance(Ci.nsICryptoHash);
|
||||
hasher.init(hasher.SHA1);
|
||||
|
||||
return CryptoUtils.digestUTF8(message, hasher);
|
||||
},
|
||||
|
||||
sha1: function sha1(message) {
|
||||
return CommonUtils.bytesAsHex(CryptoUtils.UTF8AndSHA1(message));
|
||||
},
|
||||
|
||||
sha1Base32: function sha1Base32(message) {
|
||||
return CommonUtils.encodeBase32(CryptoUtils.UTF8AndSHA1(message));
|
||||
},
|
||||
|
||||
/**
|
||||
* Produce an HMAC key object from a key string.
|
||||
*/
|
||||
@@ -180,9 +150,8 @@ this.CryptoUtils = {
|
||||
hmacAlg=Ci.nsICryptoHMAC.SHA1, hmacLen=20) {
|
||||
|
||||
// We don't have a default in the algo itself, as NSS does.
|
||||
// Use the constant.
|
||||
if (!dkLen) {
|
||||
dkLen = SYNC_KEY_DECODED_LENGTH;
|
||||
throw new Error("dkLen should be defined");
|
||||
}
|
||||
|
||||
function F(S, c, i, h) {
|
||||
@@ -544,6 +513,48 @@ this.CryptoUtils = {
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Hashing Algorithms SHA-X.
|
||||
* These values map directly onto the values defined
|
||||
* in netwerk/base/nsICryptoHash.idl.
|
||||
*/
|
||||
let shaX = ["1", "256", "384", "512"];
|
||||
|
||||
for (let shaIdx = 0, shaIdxLen = shaX.length; shaIdx < shaIdxLen; shaIdx++) {
|
||||
let shaXIdx = shaX[shaIdx];
|
||||
|
||||
/**
|
||||
* UTF-8 encode a message and perform a SHA-X over it.
|
||||
*
|
||||
* @param message
|
||||
* (string) Buffer to perform operation on. Should be a JS string.
|
||||
* It is possible to pass in a string representing an array
|
||||
* of bytes. But, you probably don't want to UTF-8 encode
|
||||
* such data and thus should not be using this function.
|
||||
*
|
||||
* @return string
|
||||
* Raw bytes constituting SHA-X hash. Value is a JS string.
|
||||
* Each character is the byte value for that offset.
|
||||
*/
|
||||
CryptoUtils["UTF8AndSHA" + shaXIdx] = function (message) {
|
||||
let hasher = Cc["@mozilla.org/security/hash;1"]
|
||||
.createInstance(Ci.nsICryptoHash);
|
||||
hasher.init(hasher["SHA" + shaXIdx]);
|
||||
|
||||
return CryptoUtils.digestUTF8(message, hasher);
|
||||
};
|
||||
|
||||
CryptoUtils["sha" + shaXIdx] = function (message) {
|
||||
return CommonUtils.bytesAsHex(
|
||||
CryptoUtils["UTF8AndSHA" + shaXIdx](message));
|
||||
};
|
||||
|
||||
CryptoUtils["sha" + shaXIdx + "Base32"] = function (message) {
|
||||
return CommonUtils.encodeBase32(
|
||||
CryptoUtils["UTF8AndSHA" + shaXIdx](message));
|
||||
};
|
||||
}
|
||||
|
||||
XPCOMUtils.defineLazyGetter(CryptoUtils, "_utf8Converter", function() {
|
||||
let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
|
||||
.createInstance(Ci.nsIScriptableUnicodeConverter);
|
||||
|
||||
Reference in New Issue
Block a user