eucrypt_crc32_div...    1 
eucrypt_crc32_div...    2 
eucrypt_crc32_div...    3 
eucrypt_crc32_div...    4 
eucrypt_crc32_div...    5 
eucrypt_crc32_div...    6 
eucrypt_crc32_div...    7 
eucrypt_crc32_div...    8 
eucrypt_crc32_div...    9 
eucrypt_crc32_div...   10 
eucrypt_crc32_div...   11 
eucrypt_crc32_div...   12 
eucrypt_crc32_div...   13 
eucrypt_crc32_div...   14 
eucrypt_crc32_div...   15 
eucrypt_crc32_div...   16 
eucrypt_crc32_div...   17   
eucrypt_crc32_div...   18   
eucrypt_crc32_div...   19   
eucrypt_crc32_div...   20 
eucrypt_crc32_div...   21 
eucrypt_crc32_div...   22 
eucrypt_crc32_div...   23 
eucrypt_crc32_div...   24 
eucrypt_crc32_div...   25 
eucrypt_crc32_div...   26 
eucrypt_crc32_div...   27 
eucrypt_crc32_div...   28 
eucrypt_crc32_div...   29 
eucrypt_crc32_div...   30 
eucrypt_crc32_div...   31 
eucrypt_crc32_div...   32 
eucrypt_crc32_div...   33 
eucrypt_crc32_div...   34 
eucrypt_crc32_div...   35 
eucrypt_crc32_div...   36 
eucrypt_crc32_div...   37 
eucrypt_crc32_div...   38 
eucrypt_crc32_div...   39 
eucrypt_crc32_div...   40 
eucrypt_crc32_div...   41 
eucrypt_crc32_div...   42 
eucrypt_crc32_div...   43 
eucrypt_crc32_div...   44 
eucrypt_crc32_div...   45 
eucrypt_crc32_div...   46 
eucrypt_crc32_div...   47 
eucrypt_crc32_div...   48 
eucrypt_crc32_div...   49 
eucrypt_crc32_div...   50 
eucrypt_crc32_div...   51 
eucrypt_crc32_div...   52 
eucrypt_crc32_div...   53 
eucrypt_crc32_div...   54 
eucrypt_crc32_div...   55 
eucrypt_crc32_div...   56 
eucrypt_crc32_div...   57 
eucrypt_crc32_div...   58 
eucrypt_crc32_div...   59 
eucrypt_crc32_div...   60 
eucrypt_crc32_div...   61 
eucrypt_crc32_div...   62 
eucrypt_crc32_div...   63 
eucrypt_crc32_div...   64 
eucrypt_crc32_div...   65 
eucrypt_crc32_div...   66 package body CRC32 is
eucrypt_crc32_div...   67   
eucrypt_crc32_div...   68   function CRC ( S : in String ) return CRC32 is
eucrypt_crc32_div...   69 
eucrypt_crc32_div...   70     R    : CRC32              := 16#FF_FF_FF_FF#;
eucrypt_crc32_div...   71 
eucrypt_crc32_div...   72     begin
eucrypt_crc32_div...   73 
eucrypt_crc32_div...   74     for I in Integer range S'First .. S'Last loop
eucrypt_crc32_div...   75       declare
eucrypt_crc32_div...   76         C : CRC32 := Character'Pos (S (I));
eucrypt_crc32_div...   77       begin
eucrypt_crc32_div...   78         CRC_Step(C, R);
eucrypt_crc32_div...   79       end;
eucrypt_crc32_div...   80     end loop;
eucrypt_crc32_div...   81 
eucrypt_crc32_div...   82     R := Bits_Reverse(R);
eucrypt_crc32_div...   83     
eucrypt_crc32_div...   84     
eucrypt_crc32_div...   85     R := R xor 16#FF_FF_FF_FF#;
eucrypt_crc32_div...   86     return R;
eucrypt_crc32_div...   87     
eucrypt_crc32_div...   88   end CRC;
eucrypt_crc32_div...   89   
eucrypt_crc32_div...   90   function CRC ( Data: in Octet_Array ) return CRC32 is
eucrypt_crc32_div...   91 
eucrypt_crc32_div...   92     R    : CRC32              := 16#FF_FF_FF_FF#;
eucrypt_crc32_div...   93 
eucrypt_crc32_div...   94     begin
eucrypt_crc32_div...   95 
eucrypt_crc32_div...   96     for I in Integer range Data'First .. Data'Last loop
eucrypt_crc32_div...   97       declare
eucrypt_crc32_div...   98         C : CRC32 := CRC32'Val( Data (I) );
eucrypt_crc32_div...   99       begin
eucrypt_crc32_div...  100         CRC_Step(C, R);
eucrypt_crc32_div...  101       end;
eucrypt_crc32_div...  102     end loop;
eucrypt_crc32_div...  103 
eucrypt_crc32_div...  104     R := Bits_Reverse(R);
eucrypt_crc32_div...  105     
eucrypt_crc32_div...  106     
eucrypt_crc32_div...  107     R := R xor 16#FF_FF_FF_FF#;
eucrypt_crc32_div...  108     return R;
eucrypt_crc32_div...  109     
eucrypt_crc32_div...  110   end CRC;
eucrypt_crc32_div...  111   
eucrypt_crc32_div...  112   
eucrypt_crc32_div...  113   
eucrypt_crc32_div...  114   
eucrypt_crc32_div...  115   
eucrypt_crc32_div...  116   procedure CRC_Step(C : in out CRC32; R : in out CRC32) is
eucrypt_crc32_div...  117     D    : constant CRC32     := 16#04_C1_1D_B7#;
eucrypt_crc32_div...  118   begin
eucrypt_crc32_div...  119     for J in Integer range 1 .. 8 loop
eucrypt_crc32_div...  120       declare
eucrypt_crc32_div...  121         Bit31Set : CRC32 := 0;
eucrypt_crc32_div...  122         Bit1 : constant CRC32 := Rotate_Right(1 and C, 1);
eucrypt_crc32_div...  123       begin
eucrypt_crc32_div...  124         R := R xor Bit1;
eucrypt_crc32_div...  125         Bit31Set := Rotate_Left(Bit31 and R, 1);
eucrypt_crc32_div...  126         R := Shift_Left (R, 1);
eucrypt_crc32_div...  127         
eucrypt_crc32_div...  128         
eucrypt_crc32_div...  129         
eucrypt_crc32_div...  130         
eucrypt_crc32_div...  131         
eucrypt_crc32_div...  132         
eucrypt_crc32_div...  133         
eucrypt_crc32_div...  134         
eucrypt_crc32_div...  135         R := R xor ((not (Bit31Set - 1)) and D);
eucrypt_crc32_div...  136         
eucrypt_crc32_div...  137         
eucrypt_crc32_div...  138         C := Shift_Right (C, 1);
eucrypt_crc32_div...  139         
eucrypt_crc32_div...  140       end;
eucrypt_crc32_div...  141     end loop;
eucrypt_crc32_div...  142   end CRC_Step;
eucrypt_crc32_div...  143   
eucrypt_crc32_div...  144   function Bits_Reverse(A : in CRC32) return CRC32 is
eucrypt_crc32_div...  145     R : CRC32 := 16#00_00_00_00#;
eucrypt_crc32_div...  146     B : CRC32 := A;
eucrypt_crc32_div...  147   begin
eucrypt_crc32_div...  148     for I in Integer range 1 .. 32 loop
eucrypt_crc32_div...  149       declare
eucrypt_crc32_div...  150         Bit : constant CRC32 := (1 and B);
eucrypt_crc32_div...  151       begin
eucrypt_crc32_div...  152         B := Shift_Right (B, 1);
eucrypt_crc32_div...  153         R := Shift_Left (R, 1);
eucrypt_crc32_div...  154         R := R or Bit;
eucrypt_crc32_div...  155       end;
eucrypt_crc32_div...  156     end loop;
eucrypt_crc32_div...  157     return R;
eucrypt_crc32_div...  158   end Bits_Reverse;
eucrypt_crc32_div...  159 end CRC32;
eucrypt_crc32_div...  160