File : g-shsh64.adb


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                         GNAT LIBRARY COMPONENTS                          --
   4 --                                                                          --
   5 --           G N A T . S E C U R E _ H A S H E S . S H A 2 _ 6 4            --
   6 --                                                                          --
   7 --                                 B o d y                                  --
   8 --                                                                          --
   9 --           Copyright (C) 2009, Free Software Foundation, Inc.             --
  10 --                                                                          --
  11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  12 -- terms of the  GNU General Public License as published  by the Free Soft- --
  13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  16 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  17 --                                                                          --
  18 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  21 --                                                                          --
  22 -- You should have received a copy of the GNU General Public License and    --
  23 -- a copy of the GCC Runtime Library Exception along with this program;     --
  24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  25 -- <http://www.gnu.org/licenses/>.                                          --
  26 --                                                                          --
  27 -- GNAT was originally developed  by the GNAT team at  New York University. --
  28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  29 --                                                                          --
  30 ------------------------------------------------------------------------------
  31 
  32 package body GNAT.Secure_Hashes.SHA2_64 is
  33 
  34    use Interfaces;
  35 
  36    ------------
  37    -- Sigma0 --
  38    ------------
  39 
  40    function Sigma0 (X : Word) return Word is
  41    begin
  42       return Rotate_Right (X, 28)
  43          xor Rotate_Right (X, 34)
  44          xor Rotate_Right (X, 39);
  45    end Sigma0;
  46 
  47    ------------
  48    -- Sigma1 --
  49    ------------
  50 
  51    function Sigma1 (X : Word) return Word is
  52    begin
  53       return Rotate_Right (X, 14)
  54          xor Rotate_Right (X, 18)
  55          xor Rotate_Right (X, 41);
  56    end Sigma1;
  57 
  58    --------
  59    -- S0 --
  60    --------
  61 
  62    function S0 (X : Word) return Word is
  63    begin
  64       return Rotate_Right (X, 1)
  65          xor Rotate_Right (X, 8)
  66          xor Shift_Right  (X, 7);
  67    end S0;
  68 
  69    --------
  70    -- S1 --
  71    --------
  72 
  73    function S1 (X : Word) return Word is
  74    begin
  75       return Rotate_Right (X, 19)
  76          xor Rotate_Right (X, 61)
  77          xor Shift_Right  (X, 6);
  78    end S1;
  79 
  80 end GNAT.Secure_Hashes.SHA2_64;