diff -uNr a/eucrypt/crc32/crc32.adb b/eucrypt/crc32/crc32.adb --- a/eucrypt/crc32/crc32.adb false +++ b/eucrypt/crc32/crc32.adb 936d9785bc02f35a58ac415074d9a7daa857d24af3093baea9bbf082d71e83edb881efcd2fce95f774f600c6a99e8fe8f3c2c2ef7553c1e72556c31f6c7b7c3a @@ -0,0 +1,52 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- This file is part of 'CRC32' -- +-- -- +-- You do not have, nor can you ever acquire the right to use, copy or -- +-- distribute this software ; Should you use this software for any purpose, -- +-- or copy and distribute it to anyone or in any manner, you are breaking -- +-- the laws of whatever soi-disant jurisdiction, and you promise to -- +-- continue doing so for the indefinite future. In any case, please -- +-- always : read and understand any software ; verify any PGP signatures -- +-- that you use - for any purpose. -- +-- -- +-- See also http://trilema.com/2015/a-new-software-licensing-paradigm . -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + + -- CRC32 implementation + -- S.MG, 2018 + +package body CRC32 is + function CRC( S: in String ) return CRC32 is + Result : CRC32 := Init_Value; + Value : CRC32; + begin + -- process input character by character + for C of S loop + Value := CRC32( Character'Pos( C ) ); + Result := Shift_Right(Result, 8) xor + Lookup( Value xor (Result and LSB_MASK)); + end loop; + -- reflect result + Result := Result xor Xor_Out; + + return Result; + end CRC; + + function CRC( Data: in Octet_Array ) return CRC32 is + Result : CRC32 := Init_Value; + begin + -- process input octet by octet + for C of Data loop + Result := Shift_Right(Result, 8) xor + Lookup( CRC32(C) xor (Result and LSB_MASK)); + end loop; + -- reflect result + Result := Result xor Xor_Out; + + return Result; + end CRC; + +end CRC32; + diff -uNr a/eucrypt/crc32/crc32.ads b/eucrypt/crc32/crc32.ads --- a/eucrypt/crc32/crc32.ads false +++ b/eucrypt/crc32/crc32.ads 1ac76c7d90dad295569040f1c845cc9394e62b64801533567bc962a787824c9c20bdf6babc35ac1e936f6b02ba6bac93806e3742adeb9ceab350ddc544ecc7fb @@ -0,0 +1,130 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- This file is part of 'CRC32' -- +-- -- +-- You do not have, nor can you ever acquire the right to use, copy or -- +-- distribute this software ; Should you use this software for any purpose, -- +-- or copy and distribute it to anyone or in any manner, you are breaking -- +-- the laws of whatever soi-disant jurisdiction, and you promise to -- +-- continue doing so for the indefinite future. In any case, please -- +-- always : read and understand any software ; verify any PGP signatures -- +-- that you use - for any purpose. -- +-- -- +-- See also http://trilema.com/2015/a-new-software-licensing-paradigm . -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + + -- CRC32, lookup-based implementation + -- S.MG, 2018 + -- + -- The CRC32 is a checksum calculated as the remainder of dividing + -- the input data by the 0x04C11DB7 polynomial. Specifications: + -- Name : "CRC-32" + -- Width : 32 (number of bits) + -- Poly : 04C11DB7 (generator polynomial) + -- Init : FFFFFFFF + -- RefIn : True (input is reflected) + -- RefOut : True (output is reflected) + -- XorOut : FFFFFFFF + -- Check : CBF43926 (expected value for input "123456789") + -- + -- This implementation is based on the CRC32 specification in: + -- Sarwate, D.V. "Computation of Cyclic Redundancy Checks via Table Look-Up" + -- in Communications of the ACM, Vol. 31 No. 8, pp.1008-1013, Aug. 1988 + +with Interfaces; use Interfaces; + +package CRC32 is + -- local, shorthand version of Interfaces. types + subtype CRC32 is Interfaces.Unsigned_32; + subtype Octet is Interfaces.Unsigned_8; + + type Octet_Array is array( Integer range <> ) of Octet; + + -- interface for external callers + -- calculate CRC32 for the given string + function CRC( S: in String ) return CRC32; + + -- calculate CRC32 for the given array of octets + function CRC( Data: in Octet_Array ) return CRC32; + + + -- internal constants and helper methods +private + function Shift_Right( Value : CRC32; + Amount : Natural) + return CRC32; + pragma Import(Intrinsic, Shift_Right); + + Init_Value : constant CRC32 := 16#FFFF_FFFF#; -- Initial value + Xor_Out : constant CRC32 := 16#FFFF_FFFF#; -- For extracting result + LSB_Mask : constant CRC32 := 16#0000_00FF#; -- lsb mask for a CRC32 value + + -- lookup table with precomputed values for CRC32 + Lookup : constant array (CRC32 range 0 .. 255) of CRC32 := + (16#0000_0000#, 16#7707_3096#, 16#EE0E_612C#, 16#9909_51BA#, + 16#076D_C419#, 16#706A_F48F#, 16#E963_A535#, 16#9E64_95A3#, + 16#0EDB_8832#, 16#79DC_B8A4#, 16#E0D5_E91E#, 16#97D2_D988#, + 16#09B6_4C2B#, 16#7EB1_7CBD#, 16#E7B8_2D07#, 16#90BF_1D91#, + 16#1DB7_1064#, 16#6AB0_20F2#, 16#F3B9_7148#, 16#84BE_41DE#, + 16#1ADA_D47D#, 16#6DDD_E4EB#, 16#F4D4_B551#, 16#83D3_85C7#, + 16#136C_9856#, 16#646B_A8C0#, 16#FD62_F97A#, 16#8A65_C9EC#, + 16#1401_5C4F#, 16#6306_6CD9#, 16#FA0F_3D63#, 16#8D08_0DF5#, + 16#3B6E_20C8#, 16#4C69_105E#, 16#D560_41E4#, 16#A267_7172#, + 16#3C03_E4D1#, 16#4B04_D447#, 16#D20D_85FD#, 16#A50A_B56B#, + 16#35B5_A8FA#, 16#42B2_986C#, 16#DBBB_C9D6#, 16#ACBC_F940#, + 16#32D8_6CE3#, 16#45DF_5C75#, 16#DCD6_0DCF#, 16#ABD1_3D59#, + 16#26D9_30AC#, 16#51DE_003A#, 16#C8D7_5180#, 16#BFD0_6116#, + 16#21B4_F4B5#, 16#56B3_C423#, 16#CFBA_9599#, 16#B8BD_A50F#, + 16#2802_B89E#, 16#5F05_8808#, 16#C60C_D9B2#, 16#B10B_E924#, + 16#2F6F_7C87#, 16#5868_4C11#, 16#C161_1DAB#, 16#B666_2D3D#, + 16#76DC_4190#, 16#01DB_7106#, 16#98D2_20BC#, 16#EFD5_102A#, + 16#71B1_8589#, 16#06B6_B51F#, 16#9FBF_E4A5#, 16#E8B8_D433#, + 16#7807_C9A2#, 16#0F00_F934#, 16#9609_A88E#, 16#E10E_9818#, + 16#7F6A_0DBB#, 16#086D_3D2D#, 16#9164_6C97#, 16#E663_5C01#, + 16#6B6B_51F4#, 16#1C6C_6162#, 16#8565_30D8#, 16#F262_004E#, + 16#6C06_95ED#, 16#1B01_A57B#, 16#8208_F4C1#, 16#F50F_C457#, + 16#65B0_D9C6#, 16#12B7_E950#, 16#8BBE_B8EA#, 16#FCB9_887C#, + 16#62DD_1DDF#, 16#15DA_2D49#, 16#8CD3_7CF3#, 16#FBD4_4C65#, + 16#4DB2_6158#, 16#3AB5_51CE#, 16#A3BC_0074#, 16#D4BB_30E2#, + 16#4ADF_A541#, 16#3DD8_95D7#, 16#A4D1_C46D#, 16#D3D6_F4FB#, + 16#4369_E96A#, 16#346E_D9FC#, 16#AD67_8846#, 16#DA60_B8D0#, + 16#4404_2D73#, 16#3303_1DE5#, 16#AA0A_4C5F#, 16#DD0D_7CC9#, + 16#5005_713C#, 16#2702_41AA#, 16#BE0B_1010#, 16#C90C_2086#, + 16#5768_B525#, 16#206F_85B3#, 16#B966_D409#, 16#CE61_E49F#, + 16#5EDE_F90E#, 16#29D9_C998#, 16#B0D0_9822#, 16#C7D7_A8B4#, + 16#59B3_3D17#, 16#2EB4_0D81#, 16#B7BD_5C3B#, 16#C0BA_6CAD#, + 16#EDB8_8320#, 16#9ABF_B3B6#, 16#03B6_E20C#, 16#74B1_D29A#, + 16#EAD5_4739#, 16#9DD2_77AF#, 16#04DB_2615#, 16#73DC_1683#, + 16#E363_0B12#, 16#9464_3B84#, 16#0D6D_6A3E#, 16#7A6A_5AA8#, + 16#E40E_CF0B#, 16#9309_FF9D#, 16#0A00_AE27#, 16#7D07_9EB1#, + 16#F00F_9344#, 16#8708_A3D2#, 16#1E01_F268#, 16#6906_C2FE#, + 16#F762_575D#, 16#8065_67CB#, 16#196C_3671#, 16#6E6B_06E7#, + 16#FED4_1B76#, 16#89D3_2BE0#, 16#10DA_7A5A#, 16#67DD_4ACC#, + 16#F9B9_DF6F#, 16#8EBE_EFF9#, 16#17B7_BE43#, 16#60B0_8ED5#, + 16#D6D6_A3E8#, 16#A1D1_937E#, 16#38D8_C2C4#, 16#4FDF_F252#, + 16#D1BB_67F1#, 16#A6BC_5767#, 16#3FB5_06DD#, 16#48B2_364B#, + 16#D80D_2BDA#, 16#AF0A_1B4C#, 16#3603_4AF6#, 16#4104_7A60#, + 16#DF60_EFC3#, 16#A867_DF55#, 16#316E_8EEF#, 16#4669_BE79#, + 16#CB61_B38C#, 16#BC66_831A#, 16#256F_D2A0#, 16#5268_E236#, + 16#CC0C_7795#, 16#BB0B_4703#, 16#2202_16B9#, 16#5505_262F#, + 16#C5BA_3BBE#, 16#B2BD_0B28#, 16#2BB4_5A92#, 16#5CB3_6A04#, + 16#C2D7_FFA7#, 16#B5D0_CF31#, 16#2CD9_9E8B#, 16#5BDE_AE1D#, + 16#9B64_C2B0#, 16#EC63_F226#, 16#756A_A39C#, 16#026D_930A#, + 16#9C09_06A9#, 16#EB0E_363F#, 16#7207_6785#, 16#0500_5713#, + 16#95BF_4A82#, 16#E2B8_7A14#, 16#7BB1_2BAE#, 16#0CB6_1B38#, + 16#92D2_8E9B#, 16#E5D5_BE0D#, 16#7CDC_EFB7#, 16#0BDB_DF21#, + 16#86D3_D2D4#, 16#F1D4_E242#, 16#68DD_B3F8#, 16#1FDA_836E#, + 16#81BE_16CD#, 16#F6B9_265B#, 16#6FB0_77E1#, 16#18B7_4777#, + 16#8808_5AE6#, 16#FF0F_6A70#, 16#6606_3BCA#, 16#1101_0B5C#, + 16#8F65_9EFF#, 16#F862_AE69#, 16#616B_FFD3#, 16#166C_CF45#, + 16#A00A_E278#, 16#D70D_D2EE#, 16#4E04_8354#, 16#3903_B3C2#, + 16#A767_2661#, 16#D060_16F7#, 16#4969_474D#, 16#3E6E_77DB#, + 16#AED1_6A4A#, 16#D9D6_5ADC#, 16#40DF_0B66#, 16#37D8_3BF0#, + 16#A9BC_AE53#, 16#DEBB_9EC5#, 16#47B2_CF7F#, 16#30B5_FFE9#, + 16#BDBD_F21C#, 16#CABA_C28A#, 16#53B3_9330#, 16#24B4_A3A6#, + 16#BAD0_3605#, 16#CDD7_0693#, 16#54DE_5729#, 16#23D9_67BF#, + 16#B366_7A2E#, 16#C461_4AB8#, 16#5D68_1B02#, 16#2A6F_2B94#, + 16#B40B_BE37#, 16#C30C_8EA1#, 16#5A05_DF1B#, 16#2D02_EF8D#); + +end CRC32; diff -uNr a/eucrypt/crc32/crc32.gpr b/eucrypt/crc32/crc32.gpr --- a/eucrypt/crc32/crc32.gpr false +++ b/eucrypt/crc32/crc32.gpr eb6f9147755c67830c904a92c4fa5d8d7ad7608987800fa8af09221bab132decea894d9b111db1d2a311976404f7e52401a3eb164fa31ddd11db89d87e546539 @@ -0,0 +1,61 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- CRC32 checksum lib -- +-- S.MG, 2018 -- +-- -- +-- You do not have, nor can you ever acquire the right to use, copy or -- +-- distribute this software ; Should you use this software for any purpose, -- +-- or copy and distribute it to anyone or in any manner, you are breaking -- +-- the laws of whatever soi-disant jurisdiction, and you promise to -- +-- continue doing so for the indefinite future. In any case, please -- +-- always : read and understand any software ; verify any PGP signatures -- +-- that you use - for any purpose. -- +-- -- +-- See also http://trilema.com/2015/a-new-software-licensing-paradigm . -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + +project CRC32 is + + for Object_Dir use "obj"; + + type Mode_Type is ("debug", "release"); + Mode : Mode_Type := external ("mode", "release"); + + for Languages use ("Ada"); + for Source_Dirs use ("."); + for Library_Dir use "lib"; + for Library_Name use "CRC32"; + for Library_Kind use "static"; + + package Compiler is + case Mode is + when "debug" => + for Switches ("Ada") + use ("-g"); + when "release" => + for Switches ("Ada") + use ("-O2", "-fdump-scos", "-gnata", "-fstack-check", + "-gnatyd", "-gnatym", + "-fdata-sections", "-ffunction-sections", "-gnatwr", "-gnatw.d", + "-gnatec=" & CRC32'Project_Dir & "restrict.adc"); + end case; + end Compiler; + + package Builder is + for Switches ("Ada") + use ("-nostdlib"); + end Builder; + + package Binder is + case Mode is + when "debug" => + for Switches ("Ada") + use (); + when "release" => + for Switches ("Ada") + use ("-static"); + end case; + end Binder; + +end CRC32; diff -uNr a/eucrypt/crc32/lib/README b/eucrypt/crc32/lib/README --- a/eucrypt/crc32/lib/README false +++ b/eucrypt/crc32/lib/README 9d94157633efc225d43225560f2c97c32a2f4bdbc7bf669e98be90f32204227814e961b4db329dc7b52329b9c62baf206208cdbe9a9f0623853a3d62584a00a4 @@ -0,0 +1 @@ +placeholder diff -uNr a/eucrypt/crc32/obj/README b/eucrypt/crc32/obj/README --- a/eucrypt/crc32/obj/README false +++ b/eucrypt/crc32/obj/README 9d94157633efc225d43225560f2c97c32a2f4bdbc7bf669e98be90f32204227814e961b4db329dc7b52329b9c62baf206208cdbe9a9f0623853a3d62584a00a4 @@ -0,0 +1 @@ +placeholder diff -uNr a/eucrypt/crc32/restrict.adc b/eucrypt/crc32/restrict.adc --- a/eucrypt/crc32/restrict.adc false +++ b/eucrypt/crc32/restrict.adc b95a723d11a7e92eef47717d6871df27d1dd3863b9a9fa2b5fc135d31337e6cef78e774abb3d2c62ddca16df40e76251b193e9bba3273ea2cc2988b6955a123a @@ -0,0 +1,80 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- This file is part of 'CRC32' -- +-- -- +-- You do not have, nor can you ever acquire the right to use, copy or -- +-- distribute this software ; Should you use this software for any purpose, -- +-- or copy and distribute it to anyone or in any manner, you are breaking -- +-- the laws of whatever soi-disant jurisdiction, and you promise to -- +-- continue doing so for the indefinite future. In any case, please -- +-- always : read and understand any software ; verify any PGP signatures -- +-- that you use - for any purpose. -- +-- -- +-- See also http://trilema.com/2015/a-new-software-licensing-paradigm . -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + +pragma Restrictions(Immediate_Reclamation); +pragma Restrictions(Max_Asynchronous_Select_Nesting => 0); +pragma Restrictions(Max_Protected_Entries => 0); +pragma Restrictions(Max_Select_Alternatives => 0); +pragma Restrictions(Max_Task_Entries => 0); +pragma Restrictions(Max_Tasks => 0); +pragma Restrictions(No_Abort_Statements); +pragma Restrictions(No_Access_Parameter_Allocators); +pragma Restrictions(No_Allocators); +pragma Restrictions(No_Asynchronous_Control); +pragma Restrictions(No_Calendar); +pragma Restrictions(No_Coextensions); +pragma Restrictions(No_Default_Stream_Attributes); +pragma Restrictions(No_Delay); +pragma Restrictions(No_Dispatch); +pragma Restrictions(No_Dispatching_Calls); +pragma Restrictions(No_Dynamic_Attachment); +pragma Restrictions(No_Dynamic_Priorities); +pragma Restrictions(No_Entry_Calls_In_Elaboration_Code); +pragma Restrictions(No_Entry_Queue); +pragma Restrictions(No_Enumeration_Maps); +pragma Restrictions(No_Exception_Propagation); +pragma Restrictions(No_Exception_Registration); +pragma Restrictions(No_Finalization); +pragma Restrictions(No_Fixed_Io); +pragma Restrictions(No_Floating_Point); +pragma Restrictions(No_Implementation_Aspect_Specifications); +pragma Restrictions(No_Implementation_Units); +pragma Restrictions(No_Implicit_Conditionals); +pragma Restrictions(No_Implicit_Dynamic_Code); +pragma Restrictions(No_Implicit_Heap_Allocations); +pragma Restrictions(No_Implicit_Protected_Object_Allocations); +pragma Restrictions(No_Implicit_Task_Allocations); +pragma Restrictions(No_Initialize_Scalars); +pragma Restrictions(No_Local_Protected_Objects); +pragma Restrictions(No_Local_Timing_Events); +pragma Restrictions(No_Multiple_Elaboration); +pragma Restrictions(No_Nested_Finalization); +pragma Restrictions(No_Protected_Type_Allocators); +pragma Restrictions(No_Protected_Types); +pragma Restrictions(No_Relative_Delay); +pragma Restrictions(No_Requeue_Statements); +pragma Restrictions(No_Secondary_Stack); +pragma Restrictions(No_Select_Statements); +pragma Restrictions(No_Specific_Termination_Handlers); +pragma Restrictions(No_Standard_Allocators_After_Elaboration); +pragma Restrictions(No_Stream_Optimizations); +pragma Restrictions(No_Streams); +pragma Restrictions(No_Task_Allocators); +pragma Restrictions(No_Task_At_Interrupt_Priority); +pragma Restrictions(No_Task_Attributes_Package); +pragma Restrictions(No_Task_Hierarchy); +pragma Restrictions(No_Tasking); +pragma Restrictions(No_Task_Termination); +pragma Restrictions(No_Terminate_Alternatives); +pragma Restrictions(No_Unchecked_Access); +pragma Restrictions(No_Unchecked_Conversion); +pragma Restrictions(No_Unchecked_Deallocation); +pragma Restrictions(No_Wide_Characters); +pragma Restrictions(Pure_Barriers); +pragma Restrictions(Simple_Barriers); +pragma Restrictions(Static_Priorities); +pragma Restrictions(Static_Storage_Size); +pragma Validity_Checks(ALL_CHECKS); diff -uNr a/eucrypt/crc32/tests/obj/README b/eucrypt/crc32/tests/obj/README --- a/eucrypt/crc32/tests/obj/README false +++ b/eucrypt/crc32/tests/obj/README 50f9b127e6ae2019779520d8998bea7f559496b1847c7c66b6ce6a6f3fc20db67d45f1fbf7a9318c86ebba0694db73de168f409d8328a751f3104c1474a83a0d @@ -0,0 +1 @@ +obj diff -uNr a/eucrypt/crc32/tests/test_crc32.adb b/eucrypt/crc32/tests/test_crc32.adb --- a/eucrypt/crc32/tests/test_crc32.adb false +++ b/eucrypt/crc32/tests/test_crc32.adb 517c943163381e304ec2fba2bf3fee8c7e7ebebbdec618db613f94f9abd3deb6df1ccf061e2fb55ddba367ad34924ccb53eed35a1e2240fdb6a1003ed6023f98 @@ -0,0 +1,39 @@ +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ +-- This file is part of 'CRC32' -- +-- -- +-- You do not have, nor can you ever acquire the right to use, copy or -- +-- distribute this software ; Should you use this software for any purpose, -- +-- or copy and distribute it to anyone or in any manner, you are breaking -- +-- the laws of whatever soi-disant jurisdiction, and you promise to -- +-- continue doing so for the indefinite future. In any case, please -- +-- always : read and understand any software ; verify any PGP signatures -- +-- that you use - for any purpose. -- +-- -- +-- See also http://trilema.com/2015/a-new-software-licensing-paradigm . -- +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + + -- Basic test for the CRC32 implementation + -- S.MG, 2018 + +with Ada.Text_IO; use Ada.Text_IO; +with Interfaces; use Interfaces; +with CRC32; + +procedure Test_CRC32 is + Input : constant String := "123456789"; + Expected : constant Unsigned_32 := 16#CBF4_3926#; + Output : Unsigned_32; +begin + Output := CRC32.CRC(Input); + if Output /= Expected then + Put_Line("FAIL: CRC32(" & Input & ") returned " & + Unsigned_32'Image(Output) & " instead of " & + Unsigned_32'Image(Expected)); + else + Put_Line("PASS: CRC32(" & Input & ") returned " & + Unsigned_32'Image(Output) & " as expected."); + end if; + +end Test_CRC32; diff -uNr a/eucrypt/crc32/tests/tests.gpr b/eucrypt/crc32/tests/tests.gpr --- a/eucrypt/crc32/tests/tests.gpr false +++ b/eucrypt/crc32/tests/tests.gpr cd1890552fbb86d0baae64378edb8d0da5d98dfb469c886cb437e91f0d3e5d3eca1b159c6e0ae74491763f86fbc669ca4cfb5dae09f856056d72d3f87f33b968 @@ -0,0 +1,24 @@ + -- Tests project for CRC32 lib + -- S.MG, 2018 + +with "../crc32.gpr"; + +project Tests is + + for Object_Dir use "obj"; + + for Languages use ("Ada"); + for Source_Dirs use ("."); + for Exec_Dir use "."; + + for Main use ("test_crc32.adb"); + + package Compiler is + for Switches ("Ada") + use ("-O2", "-fdump-scos", "-gnata", "-fstack-check", + "-gnatyd", "-gnatym", + "-fdata-sections", "-ffunction-sections", "-gnatwr", "-gnatw.d", + "-gnatec=" & CRC32'Project_Dir & "restrict.adc"); + end Compiler; + +end Tests; diff -uNr a/eucrypt/eucrypt.gpr b/eucrypt/eucrypt.gpr --- a/eucrypt/eucrypt.gpr 94d4fb2c29f384693f39a994b26a95276ea949c1bfcca5d438581dd8ee609e400606b3fa59a413a5e330bd7781ca82f668d8c4db2eac6eecd67bc4529067d786 +++ b/eucrypt/eucrypt.gpr 67129dd316e51707e7b681281ca0b6be6bfb8f6838e7b64f7a590463148100b316999cc0b6d7e8fcea723de70dee5efa88952094287646cfe6d2c15e600401ec @@ -6,7 +6,8 @@ "smg_bit_keccak/smg_bit_keccak.gpr", "smg_keccak/smg_keccak.gpr", "smg_rsa/smg_rsa.gpr", - "smg_serpent/smg_serpent.gpr"); + "smg_serpent/smg_serpent.gpr", + "crc32/crc32.gpr"); for Library_Name use "EuCrypt"; for Library_Kind use "static"; diff -uNr a/eucrypt/manifest b/eucrypt/manifest --- a/eucrypt/manifest 36dd3853f41604790d69b6db28d86933a068b0f5d64cf2224e7fd3371497e21a92b0dbb84e4367b112c55f57f35a6ec076a8e04729ea7fd8f87bbd79d846c95d +++ b/eucrypt/manifest e1a9fb1198b0f060412bb794b454ac7cc62a29e3730256d8e0d30bbd403b6b68a2f267514294478b33039eda10aa334e450f159f876f34c192bf58ea4eca48b0 @@ -18,4 +18,4 @@ 521090 eucrypt_ch13_smg_rng diana_coman Adds methods for obtaining random values directly from bits obtained from the entropy source. Following specific types are supported: unsigned int on 32 bits, unsigned int on 64 bits, dirty float between 0 and 1, float IEEE 754/1985 between 1 and 2. 527560 eucrypt_manifest diana_coman Adds this manifest file that should be modified each time a new patch is added to EuCrypt. 543780 eucrypt_fix_256 diana_coman Fix the error in smg_oaep.adb that used 255 instead of 256 when calculating/retrieving length stored on 2 octets. - +545170 eucrypt_ch14_crc32 diana_coman A simple implementation of CRC32 checksum using a lookup table. The CRC32 lib can be compiled on its own or together with the whole EuCrypt.