awa_2.4.0_59135a52/ada-keystore/ada-fuse/examples/rotfs/src/rot_13.adb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package body Rot_13 is

   function Encrypt (Plaintext : String) return String
   is
      Cyphertext : String := Plaintext;
      C : Integer;

   begin

      for I in Plaintext'Range loop

         C := Character'Pos(Plaintext(I));

         case C is
            --lowercase letter
            when 97..122 =>
               Cyphertext(I) := Character'Val((((C-97)+13) mod 26)+97);

            --uppercase letter
            when 65..90 =>
               Cyphertext(I) := Character'Val((((C-65)+13) mod 26)+65);

            when others =>
               Cyphertext(I) := Plaintext(I);

         end case;

      end loop;

      return Cyphertext;

   end Encrypt;

   function Encrypt (Plaintext : Interfaces.C.Strings.chars_ptr)
      return Interfaces.C.Strings.chars_ptr
   is
      use Interfaces.C.Strings;

   begin

      return New_String(Encrypt(Value(Plaintext)));

   end Encrypt;

end Rot_13;