/usr/lib/ocaml/cryptgps/cryptsystem_64.mli is in libcryptgps-ocaml-dev 0.2.1-9.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | (* $Id: cryptsystem_64.mli,v 1.2 2001/03/10 16:43:21 gerd Exp $
* ----------------------------------------------------------------------
* This module is part of the cryptgps package by Gerd Stolpmann.
*)
(* The module type of a cryptsystem using 64 bit block ciphers.
* Such a module is normally not used directly to encrypt messages.
* Only interesting for the average programmer are the key handling
* functions:
* - prepare: preprocesses the string representation of the key and get
* the internal representation. For some ciphers, this is a very expensive
* operation (e.g. for blowfish).
* - is_weak: for some ciphers, some keys have bad characteristics and
* should not be used to encrypt messages. These keys are called weak.
*
* HOW TO TRANSFORM A PASSWORD/PASSPHRASE INTO A KEY:
*
* It is not recommended to apply 'prepare' directly to the passphrase that
* the user types in. As letters are much more likely than other characters,
* and some bits are never used, the number of different keys would be
* MUCH smaller than the number of possible keys. To avoid this, apply
* an MD5 hash function on the ascii representation of the passphrase before
* passing the value to 'prepare', i.e.
*
* let k = prepare (Digest.substring passphrase 0 (String.length passphrase))
*
* Note, that the resulting key has not more than 128 bits, even if the
* passphrase is longer.
* To get a 256 bit key, you can concatenate the MD5 of the passphrase
* and the MD5 of the reverted passphrase.
* Up to now, 128 bit keys are secure.
*
*)
module type T =
sig
type key
(* This is the internal, often preprocessed representation of keys. *)
val encrypt_ecb :
key -> (int * int * int * int) -> (int * int * int * int)
(* This is the ECB mode of the encryption function. The four ints
* are numbers from 0 to 65535, and given from MSB to LSB.
*)
val encrypt_ecb_int32 :
key -> int32 -> int32 -> int32 ref -> int32 ref -> unit
(* The same as encrypt_ecb, but with an int32 interface *)
val decrypt_ecb :
key -> (int * int * int * int) -> (int * int * int * int)
(* This is the ECB mode of the decryption function. The four ints
* are numbers from 0 to 65535, and given from MSB to LSB.
*)
val decrypt_ecb_int32 :
key -> int32 -> int32 -> int32 ref -> int32 ref -> unit
(* The same as decrypt_ecb, but with an int32 interface *)
val prepare : string -> key
(* Prepares the string representation of a key. *)
val textkey : key -> string
(* Gets the string representation back *)
val is_weak : key -> bool
(* Determines whether the key is known as being weak. Do not use
* such keys.
*)
end
;;
(* ======================================================================
* History:
*
* $Log: cryptsystem_64.mli,v $
* Revision 1.2 2001/03/10 16:43:21 gerd
* int32 experiments
*
* Revision 1.1 1999/06/04 20:42:01 gerd
* Initial revision.
*
*
*)
|