diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-29 10:26:36 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-29 10:26:36 +0000 |
commit | 4db43fab3f4ff5766d33245315d7f9d5a74e4c53 (patch) | |
tree | 81ffb9eac36cb733ac621833a4fdd6fe31665ad9 /gcc/ada | |
parent | e8b5f25d30e610f0d631f008da46b7b29f76d6c6 (diff) | |
download | gcc-4db43fab3f4ff5766d33245315d7f9d5a74e4c53.tar.gz |
2012-10-29 Pascal Obry <obry@adacore.com>
* g-sechas.adb, g-sechas.ads: (Binary_Message_Digest): New subtype.
(Digest): New versions returning a Binary_Message_Digest.
(Wide_Digest): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192921 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/g-sechas.adb | 31 | ||||
-rw-r--r-- | gcc/ada/g-sechas.ads | 16 |
3 files changed, 53 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index f148bc8ebd6..b8304542c3b 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2012-10-29 Pascal Obry <obry@adacore.com> + + * g-sechas.adb, g-sechas.ads: (Binary_Message_Digest): New subtype. + (Digest): New versions returning a Binary_Message_Digest. + (Wide_Digest): Likewise. + 2012-10-29 Robert Dewar <dewar@adacore.com> * warnsw.adb: Complete previous change. diff --git a/gcc/ada/g-sechas.adb b/gcc/ada/g-sechas.adb index 921ef3e6247..87531a1ed23 100644 --- a/gcc/ada/g-sechas.adb +++ b/gcc/ada/g-sechas.adb @@ -184,6 +184,30 @@ package body GNAT.Secure_Hashes is return Digest (C); end Digest; + function Digest (C : Context) return Binary_Message_Digest is + Hash_Bits : Stream_Element_Array + (1 .. Stream_Element_Offset (Hash_Length)); + begin + Final (C, Hash_Bits); + return Hash_Bits; + end Digest; + + function Digest (S : String) return Binary_Message_Digest is + C : Context; + begin + Update (C, S); + return Digest (C); + end Digest; + + function Digest + (A : Stream_Element_Array) return Binary_Message_Digest + is + C : Context; + begin + Update (C, A); + return Digest (C); + end Digest; + ----------- -- Final -- ----------- @@ -325,6 +349,13 @@ package body GNAT.Secure_Hashes is return Digest (C); end Wide_Digest; + function Wide_Digest (W : Wide_String) return Binary_Message_Digest is + C : Context; + begin + Wide_Update (C, W); + return Digest (C); + end Wide_Digest; + end H; ------------------------- diff --git a/gcc/ada/g-sechas.ads b/gcc/ada/g-sechas.ads index 243bd6038fb..55f44c6de94 100644 --- a/gcc/ada/g-sechas.ads +++ b/gcc/ada/g-sechas.ads @@ -156,6 +156,22 @@ package GNAT.Secure_Hashes is Word_Length : constant Natural := Hash_State.Word'Size / 8; Hash_Length : constant Natural := Hash_Words * Word_Length; + subtype Binary_Message_Digest is + Stream_Element_Array (1 .. Stream_Element_Offset (Hash_Length)); + -- The fixed-length byte array returned by Digest, providing + -- the hash in binary representation. + + function Digest (C : Context) return Binary_Message_Digest; + -- Return hash for the data accumulated with C + + function Digest (S : String) return Binary_Message_Digest; + function Wide_Digest (W : Wide_String) return Binary_Message_Digest; + function Digest + (A : Stream_Element_Array) return Binary_Message_Digest; + -- These functions are equivalent to the corresponding Update (or + -- Wide_Update) on a default initialized Context, followed by Digest + -- on the resulting Context. + subtype Message_Digest is String (1 .. 2 * Hash_Length); -- The fixed-length string returned by Digest, providing the hash in -- hexadecimal representation. |