lotc

Index
o Crypt::RSA
o Throttle
o Vipul's Razor
o Crypt::Random
o Crypt::TripleDES
o Tie::EncryptedHash
o Crypt::Primes
o Convert::ASCII::Armour
o Concurrent::Object
o Net::XWhois
o CGI::Persistent
o Persistence::Object::Simple
o Math::Fibonacci
o Class::Loader
o Ricochet
o CODD
o Sidekick
o Fletch
o pev
o Misc scripts
Perl Module, Stable, GPL/Artistic License
Crypt::RSA
    Crypt::RSA is a pure-perl, cleanroom implementation of the RSA public-key cryptosystem. The focus of the library is speed, security, compatability, comprehensiveness and ease-of use. Crypt::RSA provides simple, high level interfaces for most functions as well as clean low-level interfaces should the programmer need to access them. It's built atop the blazingly fast PARI library which is used for all big integer arithmetic and number theoretic computations. Crypt::RSA provides arbitrary size key-pair generation, plaintext-aware encryption (OAEP) and digital signatures with appendix (PSS). For compatibility with SSLv3, RSAREF2, PGP and other applications that follow the PKCS #1 v1.5 standard, it also provides PKCS #1 v1.5 encryption and signatures.


Perl Module, Stable, GPL/Artistic License
Crypt::Random
    Crypt::Random is an interface module to the /dev/random device found on most modern unix systems. It also interfaces with egd, a user space entropy gathering daemon, available for systems where /dev/random (or similar) devices are not available. When Math::Pari is installed, Crypt::Random will return random integers of arbritary length of a given bitsize or in a specified interval.


Perl Module, Stable, GPL/Artistic License
Tie::EncryptedHash
    Tie::EncryptedHash augments Perl hash semantics to build secure, encrypting containers of data. Tie::EncryptedHash introduces special hash fields that are coupled with encrypt/decrypt routines to encrypt assignments at STORE() and decrypt retrievals at FETCH(). By design, encrypting fields are associated with keys that begin in single underscore. The remaining keyspace is used for accessing normal hash fields, which are retained without modification.


Perl Module, Stable, GPL/Artistic License
Crypt::Primes
    This module implements Ueli Maurer's algorithm for generating large provable primes and secure parameters for public-key cryptosystems. The generated primes are almost uniformly distributed over the set of primes of the specified bitsize and expected time for generation is less than the time required for generating a pseudo-prime of the same size with Miller-Rabin tests.


Perl Module, Possibly Broken, GPL/Artistic License
Crypt::TripleDES
    A 3DES implementation in pure perl. A few people have written to me about potential endianness issues in this module. There's quite possibly a bug in here, but I haven't had a chance to look at it. Use with caution, or don't use it at all. I'll happily accept a patch the bug that lurks in there.


Perl Module, Functional Prototype, GPL/Artistic License
Concurrent::Object
    A system for executing perl objects in parallel on a single or a cluster of machines. Concurrent::Object allows existing perl programs to run in parallel with simple modifications to the code. It also simulates Lazy Evaluation by replacing methods with dummies that return tied values which are evaluated at access time by way of obtaining their real value from proxy objects over IPC or TCP. Concurrent::Object was presented at Yet Another Perl Conference, 2001 held in Montreal, Canada. Here's a link to the slides.

    Concurrent::Object is a nifty hack, but some of the semantics I desire (like methods that return tied hashes and arrays instead of tied hash and array references) are not available in Perl 5. Perl 6 will allow me all the cool things I want this module to do, and I eagerly its await its arrival. A production quality Concurrent::Object would also use interpretter threads (ithreads) in addition to fork().


Perl Module, Stable, GPL/Artistic License
Net::XWhois
    The Net::XWhois class provides a generic client framework for doing Whois queries and parsing server response. The class maintains an array of top level domains and whois servers associated with them. This allows the class to transparently serve requests for different TLDs, selecting servers appropriate for the TLD. One of the goals of this module is to enable the design of consistent and predictable interfaces to incompatible whois response formats. The Whois RFC (954) does not define a template for presenting server data; consequently there is a large variation in layout styles as well as content served across servers.


Perl Module, Stable, GPL/Artistic License
CGI::Persistent
    CGI::Persistent is a subclass of the popular CGI module. It maintains server-side sessions and allows the programmer to easily propagate user state through her web application.


Perl Module, Stable, GPL/Artistic License
Math::Fibonacci
    Provides a few functions related to Fibonacci numbers, including a decompose() function that breaks down a given integer into the sum of the multiples of Fibonacci numbers.


Perl Module, Stable, GPL/Artistic License
Convert::ASCII::Armour
    This module converts hashes of binary octets into ASCII messages suitable for transfer over 6-bit clean transport channels. The encoded ASCII resembles PGP's armoured messages.


Perl Module, Stable, GPL/Artistic License
Class::Loader
    Class::Loader is an inheritable class that provides a method, _load(), to load a module from disk and construct an object by calling its constructor. It also provides a way to map modules names and associated metadata with symbolic names that can be used in place of module names at _load(). Also, see Class::Autouse by Adam Kenedy and Rob Napier which provides a transparent way to defer loading of a module till it is actually required.


Perl Module, Stable, GPL/Artistic License
Persistence::Object::Simple
    The module provides disk persistence for perl objects. It's based on Data::Dumper that serializes perl data structures as perl code.


Linux application, 95% done; some assembly required, GPL v2 License
Throttle
    throttle is a high-level, DWIM, configuration manager for Linux traffic control engine. It provides a declaration syntax to describe CBQ link-sharing structures (guidelines on how to distribute bandwidth) and an interpreter to translate these declarations into tc commands. throttle (holistically) manages various aspects of Linux traffic control including CBQ classes, leaf queues, and packet classification rules.

    One of the primary goals of throttle is ease of maintainance of large and complex CBQ structures, which tend to get difficult to manage with tc rules. throttle's declaration syntax is simple and optimized for describing CBQ trees, while its intelligent defaults, symbolic naming and various configuration shortcuts make for minimal con­ figuration files. Since throttle is mainly a wrapper around tc, the expressiveness of tc command line has been retained wherever possible.

    I wrote throttle in the winter of 2000 for a plug-into-the-network-n-play traffic shaping device I built at PacificNet to shape our wireless customers. The code is not quite as complete as I'd like it to be, but a lot of folks have asked for it, so it's now officially available from here. It worked well for us at PacificNet, but I have had no occasion to shape traffic for myself since (and I don't work at PacificNet anymore). It's unlikely I'll work on this codebase anytime soon, but you are welcome to use it, extend it, or write applications based on it.

    In my research for throttle I found there was very little in the way of documentation on Linux's implementation of CBQ. In the throttle manual, I have attempted to explain concepts behind CBQ and how it is implemented in Linux. Here's the PDF version of the manual.


A Networked System, Stable, Open Source clients available
Vipul's Razor (SpamNet)
    Vipul's Razor is a colloborative, content-based spam filteration system. Since its first release in 1998, Vipul's Razor has seen two generations of evolution, and is considered to be one of the most effective methods available for combatting spam. Vipul's Razor (also known as SpamNet) is actively developed and promoted by Cloudmark, Inc., a company I founded along with Jordan Ritter. In December 2002, Razor2/SpamNet had a quarter of million users, and it saved a century's worth of its users' time during the previous six month period. Razor2/SpamNet is growing rapidly both in participation and as a technology and I am very excited to see where it will be and what impact it will have on spam in the months & years to come.

    For open source client clients, see Vipul's Razor homepage, and for the Outlook plugin, see SpamNet homepage.


Perl Module, Stable with some pending known issues, GPL/Artistic License
Ricochet
    Ricochet is an automated source tracing and spam reporting application. By analyzing received headers it determines hosts responsible in propagation of the spam, and sends complaints to owners or abuse contacts of these hosts.


Perl Application, Beta but functional, GPL/Artistic License
Sidekick
    Sidekick is a tool for building and maintaining Perl SDKs. An SDK is a collection of perl modules, that installs from a top-level makefile. Sidekick fetches latest versions of modules from CPAN, untars them, applies stored patches, writes an appropriate Makefile.PL and a MANIFEST and builds an SDK tarball. Essentially, it converts a list of modules into a shippable SDK distribution. Sidekick also does dependency resolution by parsing the sources to find modules missing from the package. This feature can be used to build self-contained SDKs, that don't have any dangling dependencies.


Unix application, Stable, Artistic License
CODD
    CODD is a tool for creating and analyzing statistical measures of "developer involvement" in free software projects. By assimilating authorship attribution information included in source files of a package, CODD approximates the the amount of individual contributions from developers who constructed the codebase. CODD also provides many tools for analysis of the attribution data. CODD was used in the First Orbiten Free Software Survey. It has since been extended for International Institute of Infonomics that uses CODD in open source research.


Unix applications, Stable, GPL/Artistic License
pev
    pev is a tiny perl script that stands for "perl extension version" and it extracts and reports metadata from installed perl modules. It's default behaviour it to print out the version number of the installed module provided on the command line.