Skip to content
Snippets Groups Projects
Commit 214bd23b authored by Henrik (Grubba) Grubbström's avatar Henrik (Grubba) Grubbström
Browse files

Added some doc.

Fixed typo.
Changed some macros into constants.

Rev: lib/modules/Crypto/randomness.pmod:1.11
parent 19312318
No related branches found
No related tags found
No related merge requests found
...@@ -34,6 +34,7 @@ testfont binary ...@@ -34,6 +34,7 @@ testfont binary
/lib/modules/Crypto/des3_cbc.pike foreign_ident /lib/modules/Crypto/des3_cbc.pike foreign_ident
/lib/modules/Crypto/des_cbc.pike foreign_ident /lib/modules/Crypto/des_cbc.pike foreign_ident
/lib/modules/Crypto/idea_cbc.pike foreign_ident /lib/modules/Crypto/idea_cbc.pike foreign_ident
/lib/modules/Crypto/randomness.pmod foreign_ident
/lib/modules/Crypto/rsa.pike foreign_ident /lib/modules/Crypto/rsa.pike foreign_ident
/lib/modules/Filesystem.pmod/Tar.pmod foreign_ident /lib/modules/Filesystem.pmod/Tar.pmod foreign_ident
/lib/modules/GLU.pmod foreign_ident /lib/modules/GLU.pmod foreign_ident
......
/* randomness.pmod /* $Id: randomness.pmod,v 1.11 1999/08/25 17:32:54 grubba Exp $
*
* Assorted stronger or weaker randomnumber generators.
*/ */
//! module Crypto
//! submodule randomness
//! Assorted stronger or weaker randomnumber generators.
/* These devices tries to collect entropy from the environment. /* These devices tries to collect entropy from the environment.
* They differ in behaviour when they run low on entropy, /dev/random * They differ in behaviour when they run low on entropy, /dev/random
* will block if it can't provide enough random bits, while /dev/urandom * will block if it can't provide enough random bits, while /dev/urandom
* will degenerate into a reasonably strong pseudo random generator */ * will degenerate into a reasonably strong pseudo random generator */
#define RANDOM_DEVICE "/dev/random" static constant RANDOM_DEVICE = "/dev/random";
#define PRANDOM_DEVICE "/dev/urandom" static constant PRANDOM_DEVICE = "/dev/urandom";
/* Collect somewhat random data from the environment. Unfortunately, /* Collect somewhat random data from the environment. Unfortunately,
* this is quite system dependent */ * this is quite system dependent */
#define PATH "/usr/sbin:/usr/etc:/usr/bin/:/sbin/:/etc:/bin" static constant PATH = "/usr/sbin:/usr/etc:/usr/bin/:/sbin/:/etc:/bin";
#ifndef __NT__ #ifndef __NT__
#define SYSTEM_COMMANDS ({ "last -256", "arp -a", \ static constant SYSTEM_COMMANDS = ({
"netstat -anv","netstat -mv","netstat -sv", \ "last -256", "arp -a",
"uptime","ps -fel","ps aux", \ "netstat -anv","netstat -mv","netstat -sv",
"vmstat -s","vmstat -M", \ "uptime","ps -fel","ps aux",
"iostat","iostat -cdDItx"}) "vmstat -s","vmstat -M",
"iostat","iostat -cdDItx"
});
#else #else
#define SYSTEM_COMMANDS ({ "mem /c", "arp -a", "vol", "dir", "net view", \ static constant SYSTEM_COMMANDS = ({
"net statistics workstation","net statistics server", "net view" \ "mem /c", "arp -a", "vol", "dir", "net view",
"net user" }) "net statistics workstation","net statistics server",
"net user"
});
#endif #endif
#define PRIVATE #define PRIVATE
PRIVATE object global_rc4; PRIVATE object global_rc4;
// method string some_entropy()
// Executes several programs to generate some entropy from their output.
PRIVATE string some_entropy() PRIVATE string some_entropy()
{ {
string res; string res;
...@@ -67,7 +75,11 @@ PRIVATE string some_entropy() ...@@ -67,7 +75,11 @@ PRIVATE string some_entropy()
} }
//! class pike_random
//! A pseudo random generator based on the ordinary random() function.
class pike_random { class pike_random {
//! method string read(int len)
//! Returns a string of length len with pseudo random values.
string read(int len) string read(int len)
{ {
if (len > 16384) return read(len/2)+read(len-len/2); if (len > 16384) return read(len/2)+read(len-len/2);
...@@ -75,9 +87,13 @@ class pike_random { ...@@ -75,9 +87,13 @@ class pike_random {
} }
} }
//! class rc4_random
//! A pseudo random generator based on the rc4 crypto.
class rc4_random { class rc4_random {
inherit Crypto.rc4 : rc4; inherit Crypto.rc4 : rc4;
//! method void create(string secret)
//! Initialize and seed the rc4 random generator.
void create(string secret) void create(string secret)
{ {
object hash = Crypto.sha(); object hash = Crypto.sha();
...@@ -86,6 +102,9 @@ class rc4_random { ...@@ -86,6 +102,9 @@ class rc4_random {
rc4::set_encrypt_key(hash->digest()); rc4::set_encrypt_key(hash->digest());
} }
//! method string read(int len)
//! Return a string of the next len random characters from the
//! rc4 random generator.
string read(int len) string read(int len)
{ {
if (len > 16384) return read(len/2)+read(len-len/2); if (len > 16384) return read(len/2)+read(len-len/2);
...@@ -93,6 +112,7 @@ class rc4_random { ...@@ -93,6 +112,7 @@ class rc4_random {
} }
} }
object reasonably_random() object reasonably_random()
{ {
if (file_stat(PRANDOM_DEVICE)) if (file_stat(PRANDOM_DEVICE))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment