mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 08:42:24 +00:00
Fix ethMD5 build. May need more work to be correct on 64 bit builds.
This commit is contained in:
parent
9971e56451
commit
1a83167d5a
200 changed files with 407 additions and 372 deletions
|
|
@ -105,12 +105,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
|||
END EmptySet;
|
||||
|
||||
PROCEDURE SetIntType(node: OPT.Node);
|
||||
VAR b: INTEGER; n: SYSTEM.INT64;
|
||||
BEGIN
|
||||
(* Determine number of bytes required to represent constant value *)
|
||||
IF node.conval.intval >= 0 THEN n := node.conval.intval ELSE n := -(node.conval.intval+1) END;
|
||||
b := 1; WHILE (b < 8) & (ASH(n, -(8*b-1)) # 0) DO INC(b) END;
|
||||
node.typ := OPT.IntType(b)
|
||||
BEGIN node.typ := OPT.IntType(OPT.IntSize(node.conval.intval))
|
||||
END SetIntType;
|
||||
|
||||
PROCEDURE NewIntConst*(intval: SYSTEM.INT64): OPT.Node;
|
||||
|
|
|
|||
|
|
@ -212,6 +212,14 @@ VAR
|
|||
PROCEDURE err(n: INTEGER); BEGIN OPM.err(n) END err;
|
||||
|
||||
|
||||
PROCEDURE IntSize*(n: SYSTEM.INT64):INTEGER;
|
||||
(* Determines number of bytes required to store signed value n. *)
|
||||
VAR bytes: INTEGER;
|
||||
BEGIN
|
||||
IF n < 0 THEN n := -(n+1) END;
|
||||
bytes := 1; WHILE (bytes < 8) & (ASH(n, -(8*bytes-1)) # 0) DO INC(bytes) END;
|
||||
RETURN bytes
|
||||
END IntSize;
|
||||
|
||||
PROCEDURE IntType*(size: LONGINT): Struct;
|
||||
(* Selects smallest standard integer type for given size in bytes *)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ Refer to the "General ETH Oberon System Source License" contract available at: h
|
|||
MODULE ethMD5; (** portable *) (* ejz *)
|
||||
IMPORT SYSTEM;
|
||||
|
||||
(* todo. Use fixed size integers and sets. *)
|
||||
|
||||
(** The MD5 Message-Digest Algorithm (RFC1321)
|
||||
|
||||
The algorithm takes as input a message of arbitrary length and produces
|
||||
|
|
@ -29,10 +31,10 @@ under a public-key cryptosystem such as RSA. *)
|
|||
VAR cont: Context;
|
||||
BEGIN
|
||||
NEW(cont);
|
||||
cont.buf[0] := 067452301H;
|
||||
cont.buf[1] := 0EFCDAB89H;
|
||||
cont.buf[2] := 098BADCFEH;
|
||||
cont.buf[3] := 010325476H;
|
||||
cont.buf[0] := 00000000067452301H;
|
||||
cont.buf[1] := 0FFFFFFFFEFCDAB89H;
|
||||
cont.buf[2] := 0FFFFFFFF98BADCFEH;
|
||||
cont.buf[3] := 00000000010325476H;
|
||||
cont.bits := 0;
|
||||
RETURN cont
|
||||
END New;
|
||||
|
|
@ -107,73 +109,73 @@ under a public-key cryptosystem such as RSA. *)
|
|||
BEGIN
|
||||
a := buf[0]; b := buf[1]; c := buf[2]; d := buf[3];
|
||||
|
||||
STEP1(a, b, c, d, in[0]+0D76AA478H, 7);
|
||||
STEP1(d, a, b, c, in[1]+0E8C7B756H, 12);
|
||||
STEP1(c, d, a, b, in[2]+0242070DBH, 17);
|
||||
STEP1(b, c, d, a, in[3]+0C1BDCEEEH, 22);
|
||||
STEP1(a, b, c, d, in[4]+0F57C0FAFH, 7);
|
||||
STEP1(d, a, b, c, in[5]+04787C62AH, 12);
|
||||
STEP1(c, d, a, b, in[6]+0A8304613H, 17);
|
||||
STEP1(b, c, d, a, in[7]+0FD469501H, 22);
|
||||
STEP1(a, b, c, d, in[8]+0698098D8H, 7);
|
||||
STEP1(d, a, b, c, in[9]+08B44F7AFH, 12);
|
||||
STEP1(c, d, a, b, in[10]+0FFFF5BB1H, 17);
|
||||
STEP1(b, c, d, a, in[11]+0895CD7BEH, 22);
|
||||
STEP1(a, b, c, d, in[12]+06B901122H, 7);
|
||||
STEP1(d, a, b, c, in[13]+0FD987193H, 12);
|
||||
STEP1(c, d, a, b, in[14]+0A679438EH, 17);
|
||||
STEP1(b, c, d, a, in[15]+049B40821H, 22);
|
||||
STEP1(a, b, c, d, in[0] + 0FFFFFFFFD76AA478H, 7);
|
||||
STEP1(d, a, b, c, in[1] + 0FFFFFFFFE8C7B756H, 12);
|
||||
STEP1(c, d, a, b, in[2] + 000000000242070DBH, 17);
|
||||
STEP1(b, c, d, a, in[3] + 0FFFFFFFFC1BDCEEEH, 22);
|
||||
STEP1(a, b, c, d, in[4] + 0FFFFFFFFF57C0FAFH, 7);
|
||||
STEP1(d, a, b, c, in[5] + 0000000004787C62AH, 12);
|
||||
STEP1(c, d, a, b, in[6] + 0FFFFFFFFA8304613H, 17);
|
||||
STEP1(b, c, d, a, in[7] + 0FFFFFFFFFD469501H, 22);
|
||||
STEP1(a, b, c, d, in[8] + 000000000698098D8H, 7);
|
||||
STEP1(d, a, b, c, in[9] + 0FFFFFFFF8B44F7AFH, 12);
|
||||
STEP1(c, d, a, b, in[10] + 0FFFFFFFFFFFF5BB1H, 17);
|
||||
STEP1(b, c, d, a, in[11] + 0FFFFFFFF895CD7BEH, 22);
|
||||
STEP1(a, b, c, d, in[12] + 0000000006B901122H, 7);
|
||||
STEP1(d, a, b, c, in[13] + 0FFFFFFFFFD987193H, 12);
|
||||
STEP1(c, d, a, b, in[14] + 0FFFFFFFFA679438EH, 17);
|
||||
STEP1(b, c, d, a, in[15] + 00000000049B40821H, 22);
|
||||
|
||||
STEP2(a, b, c, d, in[1]+0F61E2562H, 5);
|
||||
STEP2(d, a, b, c, in[6]+0C040B340H, 9);
|
||||
STEP2(c, d, a, b, in[11]+0265E5A51H, 14);
|
||||
STEP2(b, c, d, a, in[0]+0E9B6C7AAH, 20);
|
||||
STEP2(a, b, c, d, in[5]+0D62F105DH, 5);
|
||||
STEP2(d, a, b, c, in[10]+02441453H, 9);
|
||||
STEP2(c, d, a, b, in[15]+0D8A1E681H, 14);
|
||||
STEP2(b, c, d, a, in[4]+0E7D3FBC8H, 20);
|
||||
STEP2(a, b, c, d, in[9]+021E1CDE6H, 5);
|
||||
STEP2(d, a, b, c, in[14]+0C33707D6H, 9);
|
||||
STEP2(c, d, a, b, in[3]+0F4D50D87H, 14);
|
||||
STEP2(b, c, d, a, in[8]+0455A14EDH, 20);
|
||||
STEP2(a, b, c, d, in[13]+0A9E3E905H, 5);
|
||||
STEP2(d, a, b, c, in[2]+0FCEFA3F8H, 9);
|
||||
STEP2(c, d, a, b, in[7]+0676F02D9H, 14);
|
||||
STEP2(b, c, d, a, in[12]+08D2A4C8AH, 20);
|
||||
STEP2(a, b, c, d, in[1] + 0FFFFFFFFF61E2562H, 5);
|
||||
STEP2(d, a, b, c, in[6] + 0FFFFFFFFC040B340H, 9);
|
||||
STEP2(c, d, a, b, in[11] + 000000000265E5A51H, 14);
|
||||
STEP2(b, c, d, a, in[0] + 0FFFFFFFFE9B6C7AAH, 20);
|
||||
STEP2(a, b, c, d, in[5] + 0FFFFFFFFD62F105DH, 5);
|
||||
STEP2(d, a, b, c, in[10] + 00000000002441453H, 9);
|
||||
STEP2(c, d, a, b, in[15] + 0FFFFFFFFD8A1E681H, 14);
|
||||
STEP2(b, c, d, a, in[4] + 0FFFFFFFFE7D3FBC8H, 20);
|
||||
STEP2(a, b, c, d, in[9] + 00000000021E1CDE6H, 5);
|
||||
STEP2(d, a, b, c, in[14] + 0FFFFFFFFC33707D6H, 9);
|
||||
STEP2(c, d, a, b, in[3] + 0FFFFFFFFF4D50D87H, 14);
|
||||
STEP2(b, c, d, a, in[8] + 000000000455A14EDH, 20);
|
||||
STEP2(a, b, c, d, in[13] + 0FFFFFFFFA9E3E905H, 5);
|
||||
STEP2(d, a, b, c, in[2] + 0FFFFFFFFFCEFA3F8H, 9);
|
||||
STEP2(c, d, a, b, in[7] + 000000000676F02D9H, 14);
|
||||
STEP2(b, c, d, a, in[12] + 0FFFFFFFF8D2A4C8AH, 20);
|
||||
|
||||
STEP3(a, b, c, d, in[5]+0FFFA3942H, 4);
|
||||
STEP3(d, a, b, c, in[8]+08771F681H, 11);
|
||||
STEP3(c, d, a, b, in[11]+06D9D6122H, 16);
|
||||
STEP3(b, c, d, a, in[14]+0FDE5380CH, 23);
|
||||
STEP3(a, b, c, d, in[1]+0A4BEEA44H, 4);
|
||||
STEP3(d, a, b, c, in[4]+04BDECFA9H, 11);
|
||||
STEP3(c, d, a, b, in[7]+0F6BB4B60H, 16);
|
||||
STEP3(b, c, d, a, in[10]+0BEBFBC70H, 23);
|
||||
STEP3(a, b, c, d, in[13]+0289B7EC6H, 4);
|
||||
STEP3(d, a, b, c, in[0]+0EAA127FAH, 11);
|
||||
STEP3(c, d, a, b, in[3]+0D4EF3085H, 16);
|
||||
STEP3(b, c, d, a, in[6]+04881D05H, 23);
|
||||
STEP3(a, b, c, d, in[9]+0D9D4D039H, 4);
|
||||
STEP3(d, a, b, c, in[12]+0E6DB99E5H, 11);
|
||||
STEP3(c, d, a, b, in[15]+01FA27CF8H, 16);
|
||||
STEP3(b, c, d, a, in[2]+0C4AC5665H, 23);
|
||||
STEP3(a, b, c, d, in[5] + 0FFFFFFFFFFFA3942H, 4);
|
||||
STEP3(d, a, b, c, in[8] + 0FFFFFFFF8771F681H, 11);
|
||||
STEP3(c, d, a, b, in[11] + 0000000006D9D6122H, 16);
|
||||
STEP3(b, c, d, a, in[14] + 0FFFFFFFFFDE5380CH, 23);
|
||||
STEP3(a, b, c, d, in[1] + 0FFFFFFFFA4BEEA44H, 4);
|
||||
STEP3(d, a, b, c, in[4] + 0000000004BDECFA9H, 11);
|
||||
STEP3(c, d, a, b, in[7] + 0FFFFFFFFF6BB4B60H, 16);
|
||||
STEP3(b, c, d, a, in[10] + 0FFFFFFFFBEBFBC70H, 23);
|
||||
STEP3(a, b, c, d, in[13] + 000000000289B7EC6H, 4);
|
||||
STEP3(d, a, b, c, in[0] + 0FFFFFFFFEAA127FAH, 11);
|
||||
STEP3(c, d, a, b, in[3] + 0FFFFFFFFD4EF3085H, 16);
|
||||
STEP3(b, c, d, a, in[6] + 00000000004881D05H, 23);
|
||||
STEP3(a, b, c, d, in[9] + 0FFFFFFFFD9D4D039H, 4);
|
||||
STEP3(d, a, b, c, in[12] + 0FFFFFFFFE6DB99E5H, 11);
|
||||
STEP3(c, d, a, b, in[15] + 0000000001FA27CF8H, 16);
|
||||
STEP3(b, c, d, a, in[2] + 0FFFFFFFFC4AC5665H, 23);
|
||||
|
||||
STEP4(a, b, c, d, in[0]+0F4292244H, 6);
|
||||
STEP4(d, a, b, c, in[7]+0432AFF97H, 10);
|
||||
STEP4(c, d, a, b, in[14]+0AB9423A7H, 15);
|
||||
STEP4(b, c, d, a, in[5]+0FC93A039H, 21);
|
||||
STEP4(a, b, c, d, in[12]+0655B59C3H, 6);
|
||||
STEP4(d, a, b, c, in[3]+08F0CCC92H, 10);
|
||||
STEP4(c, d, a, b, in[10]+0FFEFF47DH, 15);
|
||||
STEP4(b, c, d, a, in[1]+085845DD1H, 21);
|
||||
STEP4(a, b, c, d, in[8]+06FA87E4FH, 6);
|
||||
STEP4(d, a, b, c, in[15]+0FE2CE6E0H, 10);
|
||||
STEP4(c, d, a, b, in[6]+0A3014314H, 15);
|
||||
STEP4(b, c, d, a, in[13]+04E0811A1H, 21);
|
||||
STEP4(a, b, c, d, in[4]+0F7537E82H, 6);
|
||||
STEP4(d, a, b, c, in[11]+ 0BD3AF235H, 10);
|
||||
STEP4(c, d, a, b, in[2]+02AD7D2BBH, 15);
|
||||
STEP4(b, c, d, a, in[9]+0EB86D391H, 21);
|
||||
STEP4(a, b, c, d, in[0] + 0FFFFFFFFF4292244H, 6);
|
||||
STEP4(d, a, b, c, in[7] + 000000000432AFF97H, 10);
|
||||
STEP4(c, d, a, b, in[14] + 0FFFFFFFFAB9423A7H, 15);
|
||||
STEP4(b, c, d, a, in[5] + 0FFFFFFFFFC93A039H, 21);
|
||||
STEP4(a, b, c, d, in[12] + 000000000655B59C3H, 6);
|
||||
STEP4(d, a, b, c, in[3] + 0FFFFFFFF8F0CCC92H, 10);
|
||||
STEP4(c, d, a, b, in[10] + 0FFFFFFFFFFEFF47DH, 15);
|
||||
STEP4(b, c, d, a, in[1] + 0FFFFFFFF85845DD1H, 21);
|
||||
STEP4(a, b, c, d, in[8] + 0000000006FA87E4FH, 6);
|
||||
STEP4(d, a, b, c, in[15] + 0FFFFFFFFFE2CE6E0H, 10);
|
||||
STEP4(c, d, a, b, in[6] + 0FFFFFFFFA3014314H, 15);
|
||||
STEP4(b, c, d, a, in[13] + 0000000004E0811A1H, 21);
|
||||
STEP4(a, b, c, d, in[4] + 0FFFFFFFFF7537E82H, 6);
|
||||
STEP4(d, a, b, c, in[11] + 0FFFFFFFFBD3AF235H, 10);
|
||||
STEP4(c, d, a, b, in[2] + 0000000002AD7D2BBH, 15);
|
||||
STEP4(b, c, d, a, in[9] + 0FFFFFFFFEB86D391H, 21);
|
||||
|
||||
INC(buf[0], a); INC(buf[1], b);
|
||||
INC(buf[2], c); INC(buf[3], d)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
14 Sep 2016 13:59:08
|
||||
20 Sep 2016 16:42:29
|
||||
|
|
|
|||
|
|
@ -335,7 +335,7 @@ misc:
|
|||
s3:
|
||||
@printf "\nMaking s3 library\n"
|
||||
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs ../../src/library/s3/ethBTrees.Mod
|
||||
# cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs ../../src/library/s3/ethMD5.Mod
|
||||
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs ../../src/library/s3/ethMD5.Mod
|
||||
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs ../../src/library/s3/ethSets.Mod
|
||||
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs ../../src/library/s3/ethZlib.Mod
|
||||
cd $(BUILDDIR); $(ROOTDIR)/$(VISHAP) -Ffs ../../src/library/s3/ethZlibBuffers.Mod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue