1. A programmable cryptographic system for processing data units comprising: active and shadow microcode memories for storing first and second channel programs, respectively; a plurality of function units for performing operations on a data unit; active and shadow function unit configuration memories for storing configuration information for at least some of said plurality of function units; active and shadow context memories for storing, respectively, state information of the first and second channel programs; and a microsequencer for processing one of the channel programs, the microsequencer providing control information to the plurality of function units in accordance with the one of the channel programs.