Linear Feedback Shift Registers for OCaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add READMEs for 16 packages, fix merlint issues, add KVN tests

READMEs for all new packages. Fix missing docs (ocm, stix, globe),
naming (project_visible→visible, label_info→info, shader_kind→kind),
add .ocamlformat to csvt, add 11 KVN tests.

+40
+40
README.md
··· 1 + # lfsr 2 + 3 + Linear Feedback Shift Registers for OCaml. 4 + 5 + Configurable LFSRs (Fibonacci form) with up to 62-bit state. Includes a preset for CCSDS OID frame randomization (32-cell, polynomial x^32 + x^22 + x^2 + x + 1, per CCSDS 132.0-B-3 Annex D). Used for TRANSEC traffic flow confidentiality in satellite links. 6 + 7 + ## Installation 8 + 9 + ``` 10 + opam install lfsr 11 + ``` 12 + 13 + ## Usage 14 + 15 + ```ocaml 16 + (* CCSDS OID frame randomization *) 17 + let lfsr = Lfsr.ccsds_oid () in 18 + let noise = Lfsr.generate lfsr 256 in 19 + (* XOR with frame data for randomization *) 20 + 21 + (* Custom LFSR *) 22 + let lfsr = Lfsr.v ~taps:0xC0000401 ~seed:0xFFFFFFFF ~width:32 in 23 + let byte = Lfsr.next_byte lfsr in 24 + Printf.printf "0x%02X\n" byte 25 + ``` 26 + 27 + ## API Overview 28 + 29 + - **`type t`** -- Mutable LFSR state 30 + - **`v`** -- Create LFSR with custom taps, seed, and width (1-62 bits) 31 + - **`ccsds_oid`** -- Preset for CCSDS 132.0-B-3 OID frame randomization 32 + - **`step`** -- Advance one bit, return output bit (0 or 1) 33 + - **`next_byte`** -- Advance 8 bits, return byte (MSB-first) 34 + - **`fill`** -- Fill a buffer with pseudo-noise 35 + - **`generate`** -- Generate n bytes of pseudo-noise 36 + - **`state`**, **`width`** -- Query register state 37 + 38 + ## License 39 + 40 + MIT