|
@@ -25,7 +25,7 @@ package haxe.crypto;
|
|
Creates a Sha224 of a String.
|
|
Creates a Sha224 of a String.
|
|
*/
|
|
*/
|
|
class Sha224 {
|
|
class Sha224 {
|
|
-
|
|
|
|
|
|
+
|
|
public static function encode( s:String ) : String {
|
|
public static function encode( s:String ) : String {
|
|
#if php
|
|
#if php
|
|
return untyped __call__("hash", "sha224", s);
|
|
return untyped __call__("hash", "sha224", s);
|
|
@@ -38,7 +38,7 @@ class Sha224 {
|
|
|
|
|
|
public static function make( b : haxe.io.Bytes ) : haxe.io.Bytes {
|
|
public static function make( b : haxe.io.Bytes ) : haxe.io.Bytes {
|
|
#if php
|
|
#if php
|
|
- return haxe.io.Bytes.ofData(untyped __call__("hash", "sha224", b.getData(), true));
|
|
|
|
|
|
+ return haxe.io.Bytes.ofData(haxe.io.BytesData.ofString(untyped __call__("hash", "sha224", b.getData().toString(), true)));
|
|
#else
|
|
#else
|
|
var h = new Sha224().doEncode(b.toString(), b.length*8);
|
|
var h = new Sha224().doEncode(b.toString(), b.length*8);
|
|
var out = haxe.io.Bytes.alloc(28);
|
|
var out = haxe.io.Bytes.alloc(28);
|
|
@@ -52,26 +52,26 @@ class Sha224 {
|
|
return out;
|
|
return out;
|
|
#end
|
|
#end
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public function new() {
|
|
public function new() {
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function doEncode( str : String, strlen : Int ) : Array<Int> {
|
|
function doEncode( str : String, strlen : Int ) : Array<Int> {
|
|
var K : Array<Int> = [
|
|
var K : Array<Int> = [
|
|
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
|
|
0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
|
|
- 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
|
|
|
|
|
|
+ 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
|
|
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
|
|
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
|
|
- 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
|
|
|
|
- 0xE49B69C1, 0xEFBE4786, 0xFC19DC6 , 0x240CA1CC,
|
|
|
|
- 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
|
|
|
|
|
|
+ 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
|
|
|
|
+ 0xE49B69C1, 0xEFBE4786, 0xFC19DC6 , 0x240CA1CC,
|
|
|
|
+ 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
|
|
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
|
|
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
|
|
- 0xC6E00BF3, 0xD5A79147, 0x6CA6351 , 0x14292967,
|
|
|
|
|
|
+ 0xC6E00BF3, 0xD5A79147, 0x6CA6351 , 0x14292967,
|
|
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
|
|
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
|
|
- 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
|
|
|
|
|
|
+ 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
|
|
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
|
|
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
|
|
- 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
|
|
|
|
|
|
+ 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
|
|
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
|
|
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
|
|
- 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
|
|
|
|
|
|
+ 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
|
|
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
|
|
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
|
|
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
|
|
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2
|
|
];
|
|
];
|
|
@@ -158,38 +158,38 @@ class Sha224 {
|
|
function ROTR(X, n) {
|
|
function ROTR(X, n) {
|
|
return ( X >>> n ) | (X << (32 - n));
|
|
return ( X >>> n ) | (X << (32 - n));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// ++
|
|
// ++
|
|
function SHR(X, n) {
|
|
function SHR(X, n) {
|
|
return ( X >>> n );
|
|
return ( X >>> n );
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// ++
|
|
// ++
|
|
function Ch(x, y, z) {
|
|
function Ch(x, y, z) {
|
|
return ((x & y) ^ ((~x) & z));
|
|
return ((x & y) ^ ((~x) & z));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
// ++
|
|
// ++
|
|
function Maj(x, y, z) {
|
|
function Maj(x, y, z) {
|
|
return ((x & y) ^ (x & z) ^ (y & z));
|
|
return ((x & y) ^ (x & z) ^ (y & z));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function Sigma0(x) {
|
|
function Sigma0(x) {
|
|
return ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22);
|
|
return ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function Sigma1(x) {
|
|
function Sigma1(x) {
|
|
return ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25);
|
|
return ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function Gamma0(x) {
|
|
function Gamma0(x) {
|
|
return ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3);
|
|
return ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function Gamma1(x) {
|
|
function Gamma1(x) {
|
|
return ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10);
|
|
return ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
function hex( a : Array<Int> ){
|
|
function hex( a : Array<Int> ){
|
|
var str = "";
|
|
var str = "";
|
|
for( num in a ) {
|
|
for( num in a ) {
|