The cl-isaac Reference Manual

This is the cl-isaac Reference Manual, version 1.0.8, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 15:21:08 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 cl-isaac

Optimized Common Lisp version of Bob Jenkins’ ISAAC-32 and ISAAC-64 algorithms, fast cryptographic random number generators.

Maintainer

"the Phoeron" Colin J.E. Lupton <>

Author

Doug Hoyte <>

Contact

Home Page

https://thephoeron.common-lisp.dev/cl-isaac

Source Control

(GIT https://gitlab.common-lisp.net/thephoeron/cl-isaac)

Bug Tracker

https://gitlab.common-lisp.net/thephoeron/cl-isaac/-/issues

License

BSD Simplified

Version

1.0.8

Source

cl-isaac.asd.

Child Components

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.1 cl-isaac/cl-isaac.asd

Source

cl-isaac.asd.

Parent Component

cl-isaac (system).

ASDF Systems

cl-isaac.

Packages

cl-isaac-asd.

Public Interface

*isaac-version* (special variable).


3.1.2 cl-isaac/packages.lisp

Source

cl-isaac.asd.

Parent Component

cl-isaac (system).

Packages

cl-isaac.


3.1.3 cl-isaac/isaac-32.lisp

Dependency

packages.lisp (file).

Source

cl-isaac.asd.

Parent Component

cl-isaac (system).

Public Interface
Internals

incf-wrap32 (macro).


3.1.4 cl-isaac/isaac-64.lisp

Dependency

isaac-32.lisp (file).

Source

cl-isaac.asd.

Parent Component

cl-isaac (system).

Public Interface
Internals

3.1.5 cl-isaac/cl-isaac.lisp

Dependency

isaac-64.lisp (file).

Source

cl-isaac.asd.

Parent Component

cl-isaac (system).

Public Interface
Internals

test-self-seed-64 (function).


4 Packages

Packages are listed by definition order.


4.1 cl-isaac

Source

packages.lisp.

Nickname

isaac

Use List
  • common-lisp.
  • common-lisp-user.
Public Interface
Internals

4.2 cl-isaac-asd

Source

cl-isaac.asd.

Use List
  • asdf/interface.
  • common-lisp.
Public Interface

*isaac-version* (special variable).


5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Special variables

Special Variable: *isaac-version*

A string denoting the current version of CL-ISAAC. Used for diagnostic output.

Package

cl-isaac-asd.

Source

cl-isaac.asd.


5.1.2 Macros

Macro: mix (a b c d e f g h)
Package

cl-isaac.

Source

isaac-32.lisp.

Macro: mix64 (a b c d e f g h)
Package

cl-isaac.

Source

isaac-64.lisp.


5.1.3 Ordinary functions

Function: copy-isaac-ctx (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Function: copy-isaac64-ctx (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Function: generate-next-isaac-block (ctx)
Package

cl-isaac.

Source

isaac-32.lisp.

Function: generate-next-isaac64-block (ctx)
Package

cl-isaac.

Source

isaac-64.lisp.

Function: init-common-lisp-random-seed (&key is64)

Initialize random seed from CL:RANDOM. If :is64 t, use ISAAC-64 context.

Package

cl-isaac.

Source

cl-isaac.lisp.

Function: init-kernel-seed (&key is64)

Initialize Kernel seed from /dev/arandom on BSD systems, /dev/urandom on Linux systems, or return an error. If :is64 t, use ISAAC-64 context.

Package

cl-isaac.

Source

cl-isaac.lisp.

Function: init-null-seed (&key is64)

Initialize null seed, useful for testing but not production. If :is64 t, use ISAAC-64 context.

Package

cl-isaac.

Source

cl-isaac.lisp.

Function: init-self-seed (&key count is64)

Initialize cryptographically strong self-seed starting with a kernel-seed as first round, and then performing a scramble on the bits and modular addition between the resulting values and a new kernel-seed on each additional count. :count n (default: 1), a real number, instructs the self-seed to repeat n times. If :is64 t, use ISAAC-64 context.

Package

cl-isaac.

Source

cl-isaac.lisp.

Reader: isaac-ctx-a (instance)
Writer: (setf isaac-ctx-a) (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Target Slot

a.

Reader: isaac-ctx-b (instance)
Writer: (setf isaac-ctx-b) (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Target Slot

b.

Reader: isaac-ctx-c (instance)
Writer: (setf isaac-ctx-c) (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Target Slot

c.

Function: isaac-ctx-p (object)
Package

cl-isaac.

Source

isaac-32.lisp.

Reader: isaac-ctx-randcnt (instance)
Writer: (setf isaac-ctx-randcnt) (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Target Slot

randcnt.

Reader: isaac-ctx-randmem (instance)
Writer: (setf isaac-ctx-randmem) (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Target Slot

randmem.

Reader: isaac-ctx-randrsl (instance)
Writer: (setf isaac-ctx-randrsl) (instance)
Package

cl-isaac.

Source

isaac-32.lisp.

Target Slot

randrsl.

Reader: isaac64-ctx-a (instance)
Writer: (setf isaac64-ctx-a) (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Target Slot

a.

Reader: isaac64-ctx-b (instance)
Writer: (setf isaac64-ctx-b) (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Target Slot

b.

Reader: isaac64-ctx-c (instance)
Writer: (setf isaac64-ctx-c) (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Target Slot

c.

Function: isaac64-ctx-p (object)
Package

cl-isaac.

Source

isaac-64.lisp.

Reader: isaac64-ctx-randcnt (instance)
Writer: (setf isaac64-ctx-randcnt) (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Target Slot

randcnt.

Reader: isaac64-ctx-randmem (instance)
Writer: (setf isaac64-ctx-randmem) (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Target Slot

randmem.

Reader: isaac64-ctx-randrsl (instance)
Writer: (setf isaac64-ctx-randrsl) (instance)
Package

cl-isaac.

Source

isaac-64.lisp.

Target Slot

randrsl.

Function: jenkins-output (filename)

Output ISAAC-32 block context to FILENAME using null seed. Output is the same as Jenkins’ randvect.txt

Package

cl-isaac.

Source

cl-isaac.lisp.

Function: jenkins-output-64 (filename)

Output ISAAC-64 block context to FILENAME using null seed.

Package

cl-isaac.

Source

cl-isaac.lisp.

Function: make-isaac-ctx (&key randcnt randrsl randmem a b c)
Package

cl-isaac.

Source

isaac-32.lisp.

Function: make-isaac64-ctx (&key randcnt randrsl randmem a b c)
Package

cl-isaac.

Source

isaac-64.lisp.

Function: rand-bits (ctx n)
Package

cl-isaac.

Source

isaac-32.lisp.

Function: rand-bits-64 (ctx n)
Package

cl-isaac.

Source

isaac-64.lisp.

Function: rand32 (ctx)
Package

cl-isaac.

Source

isaac-32.lisp.

Function: rand64 (ctx)
Package

cl-isaac.

Source

isaac-64.lisp.

Function: scramble (ctx)
Package

cl-isaac.

Source

isaac-32.lisp.

Function: scramble64 (ctx)
Package

cl-isaac.

Source

isaac-64.lisp.


5.1.4 Structures

Structure: isaac-ctx
Package

cl-isaac.

Source

isaac-32.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: randcnt
Type

(unsigned-byte 32)

Initform

0

Readers

isaac-ctx-randcnt.

Writers

(setf isaac-ctx-randcnt).

Slot: randrsl
Type

(simple-array (unsigned-byte 32) (256))

Initform

(make-array 256 :element-type (quote (unsigned-byte 32)) :initial-element 0)

Readers

isaac-ctx-randrsl.

Writers

(setf isaac-ctx-randrsl).

Slot: randmem
Type

(simple-array (unsigned-byte 32) (256))

Initform

(make-array 256 :element-type (quote (unsigned-byte 32)) :initial-element 0)

Readers

isaac-ctx-randmem.

Writers

(setf isaac-ctx-randmem).

Slot: a
Type

(unsigned-byte 32)

Initform

0

Readers

isaac-ctx-a.

Writers

(setf isaac-ctx-a).

Slot: b
Type

(unsigned-byte 32)

Initform

0

Readers

isaac-ctx-b.

Writers

(setf isaac-ctx-b).

Slot: c
Type

(unsigned-byte 32)

Initform

0

Readers

isaac-ctx-c.

Writers

(setf isaac-ctx-c).

Structure: isaac64-ctx
Package

cl-isaac.

Source

isaac-64.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: randcnt
Type

(unsigned-byte 64)

Initform

0

Readers

isaac64-ctx-randcnt.

Writers

(setf isaac64-ctx-randcnt).

Slot: randrsl
Type

(simple-array (unsigned-byte 64) (256))

Initform

(make-array 256 :element-type (quote (unsigned-byte 64)) :initial-element 0)

Readers

isaac64-ctx-randrsl.

Writers

(setf isaac64-ctx-randrsl).

Slot: randmem
Type

(simple-array (unsigned-byte 64) (256))

Initform

(make-array 256 :element-type (quote (unsigned-byte 64)) :initial-element 0)

Readers

isaac64-ctx-randmem.

Writers

(setf isaac64-ctx-randmem).

Slot: a
Type

(unsigned-byte 64)

Initform

0

Readers

isaac64-ctx-a.

Writers

(setf isaac64-ctx-a).

Slot: b
Type

(unsigned-byte 64)

Initform

0

Readers

isaac64-ctx-b.

Writers

(setf isaac64-ctx-b).

Slot: c
Type

(unsigned-byte 64)

Initform

0

Readers

isaac64-ctx-c.

Writers

(setf isaac64-ctx-c).


5.2 Internals


5.2.1 Macros

Macro: decf-wrap64 (a b)
Package

cl-isaac.

Source

isaac-64.lisp.

Macro: incf-wrap32 (a b)
Package

cl-isaac.

Source

isaac-32.lisp.

Macro: incf-wrap64 (a b)
Package

cl-isaac.

Source

isaac-64.lisp.


5.2.2 Ordinary functions

Function: test-self-seed-64 (filename)

Output ISAAC-64 block context to FILENAME using self-seed.

Package

cl-isaac.

Source

cl-isaac.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   (  
C   D   F   G   I   J   M   R   S   T  
Index Entry  Section

(
(setf isaac-ctx-a): Public ordinary functions
(setf isaac-ctx-b): Public ordinary functions
(setf isaac-ctx-c): Public ordinary functions
(setf isaac-ctx-randcnt): Public ordinary functions
(setf isaac-ctx-randmem): Public ordinary functions
(setf isaac-ctx-randrsl): Public ordinary functions
(setf isaac64-ctx-a): Public ordinary functions
(setf isaac64-ctx-b): Public ordinary functions
(setf isaac64-ctx-c): Public ordinary functions
(setf isaac64-ctx-randcnt): Public ordinary functions
(setf isaac64-ctx-randmem): Public ordinary functions
(setf isaac64-ctx-randrsl): Public ordinary functions

C
copy-isaac-ctx: Public ordinary functions
copy-isaac64-ctx: Public ordinary functions

D
decf-wrap64: Private macros

F
Function, (setf isaac-ctx-a): Public ordinary functions
Function, (setf isaac-ctx-b): Public ordinary functions
Function, (setf isaac-ctx-c): Public ordinary functions
Function, (setf isaac-ctx-randcnt): Public ordinary functions
Function, (setf isaac-ctx-randmem): Public ordinary functions
Function, (setf isaac-ctx-randrsl): Public ordinary functions
Function, (setf isaac64-ctx-a): Public ordinary functions
Function, (setf isaac64-ctx-b): Public ordinary functions
Function, (setf isaac64-ctx-c): Public ordinary functions
Function, (setf isaac64-ctx-randcnt): Public ordinary functions
Function, (setf isaac64-ctx-randmem): Public ordinary functions
Function, (setf isaac64-ctx-randrsl): Public ordinary functions
Function, copy-isaac-ctx: Public ordinary functions
Function, copy-isaac64-ctx: Public ordinary functions
Function, generate-next-isaac-block: Public ordinary functions
Function, generate-next-isaac64-block: Public ordinary functions
Function, init-common-lisp-random-seed: Public ordinary functions
Function, init-kernel-seed: Public ordinary functions
Function, init-null-seed: Public ordinary functions
Function, init-self-seed: Public ordinary functions
Function, isaac-ctx-a: Public ordinary functions
Function, isaac-ctx-b: Public ordinary functions
Function, isaac-ctx-c: Public ordinary functions
Function, isaac-ctx-p: Public ordinary functions
Function, isaac-ctx-randcnt: Public ordinary functions
Function, isaac-ctx-randmem: Public ordinary functions
Function, isaac-ctx-randrsl: Public ordinary functions
Function, isaac64-ctx-a: Public ordinary functions
Function, isaac64-ctx-b: Public ordinary functions
Function, isaac64-ctx-c: Public ordinary functions
Function, isaac64-ctx-p: Public ordinary functions
Function, isaac64-ctx-randcnt: Public ordinary functions
Function, isaac64-ctx-randmem: Public ordinary functions
Function, isaac64-ctx-randrsl: Public ordinary functions
Function, jenkins-output: Public ordinary functions
Function, jenkins-output-64: Public ordinary functions
Function, make-isaac-ctx: Public ordinary functions
Function, make-isaac64-ctx: Public ordinary functions
Function, rand-bits: Public ordinary functions
Function, rand-bits-64: Public ordinary functions
Function, rand32: Public ordinary functions
Function, rand64: Public ordinary functions
Function, scramble: Public ordinary functions
Function, scramble64: Public ordinary functions
Function, test-self-seed-64: Private ordinary functions

G
generate-next-isaac-block: Public ordinary functions
generate-next-isaac64-block: Public ordinary functions

I
incf-wrap32: Private macros
incf-wrap64: Private macros
init-common-lisp-random-seed: Public ordinary functions
init-kernel-seed: Public ordinary functions
init-null-seed: Public ordinary functions
init-self-seed: Public ordinary functions
isaac-ctx-a: Public ordinary functions
isaac-ctx-b: Public ordinary functions
isaac-ctx-c: Public ordinary functions
isaac-ctx-p: Public ordinary functions
isaac-ctx-randcnt: Public ordinary functions
isaac-ctx-randmem: Public ordinary functions
isaac-ctx-randrsl: Public ordinary functions
isaac64-ctx-a: Public ordinary functions
isaac64-ctx-b: Public ordinary functions
isaac64-ctx-c: Public ordinary functions
isaac64-ctx-p: Public ordinary functions
isaac64-ctx-randcnt: Public ordinary functions
isaac64-ctx-randmem: Public ordinary functions
isaac64-ctx-randrsl: Public ordinary functions

J
jenkins-output: Public ordinary functions
jenkins-output-64: Public ordinary functions

M
Macro, decf-wrap64: Private macros
Macro, incf-wrap32: Private macros
Macro, incf-wrap64: Private macros
Macro, mix: Public macros
Macro, mix64: Public macros
make-isaac-ctx: Public ordinary functions
make-isaac64-ctx: Public ordinary functions
mix: Public macros
mix64: Public macros

R
rand-bits: Public ordinary functions
rand-bits-64: Public ordinary functions
rand32: Public ordinary functions
rand64: Public ordinary functions

S
scramble: Public ordinary functions
scramble64: Public ordinary functions

T
test-self-seed-64: Private ordinary functions