OpenCores
URL https://opencores.org/ocsvn/xgate/xgate/trunk

Subversion Repositories xgate

[/] [xgate/] [trunk/] [sw/] [applications/] [skipjack-1.01/] [README.txt] - Diff between revs 81 and 83

Only display areas with differences | Details | Blame | View Log

Rev 81 Rev 83
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
Bob Hayes -- August 10, 2010
Bob Hayes -- August 10, 2010
  SKIPJACK ENCRYPT/DECRYPT for xgate RISC processor core
  SKIPJACK ENCRYPT/DECRYPT for xgate RISC processor core
  Version 0.1 Basic SKIPJACK Encrypt and Decrypt modules for the Xgate
  Version 0.1 Basic SKIPJACK Encrypt and Decrypt modules for the Xgate
   processor. These routines do the basic codebook encrypt and decrypt
   processor. These routines do the basic codebook encrypt and decrypt
   functions, other modes of use such as output feedback,cipher feedback and
   functions, other modes of use such as output feedback,cipher feedback and
   cipher block chaining can be added at the host code level or the routines
   cipher block chaining can be added at the host code level or the routines
   could be expanded to incorporate the required functionality.
   could be expanded to incorporate the required functionality.
  This implementation is believed to be compliant with the SKIPJACK algorithm
  This implementation is believed to be compliant with the SKIPJACK algorithm
   as described in "SKIPJACK and KEA Algorithm Specifications" Version 2.0
   as described in "SKIPJACK and KEA Algorithm Specifications" Version 2.0
   dated 29 May 1998, which is available from the National Institute for
   dated 29 May 1998, which is available from the National Institute for
   Standards and Technology:
   Standards and Technology:
     http://csrc.nist.gov/groups/STM/cavp/documents/skipjack/skipjack.pdf
     http://csrc.nist.gov/groups/STM/cavp/documents/skipjack/skipjack.pdf
  The algorithm encrypts a 64 bit block of data with an 80 bit key running
  The algorithm encrypts a 64 bit block of data with an 80 bit key running
   through the encryption loop 32 times. The encrypt/decrypt function has been
   through the encryption loop 32 times. The encrypt/decrypt function has been
   verified by running the key and plain text and cypher test given in the
   verified by running the key and plain text and cypher test given in the
   specification document.(Some have noted that this only verifies about half
   specification document.(Some have noted that this only verifies about half
   of the entries in the F Table.)
   of the entries in the F Table.)
  Basic encryption process takes approx. 6468 cycles
  Basic encryption process takes approx. 6468 cycles
  Basic decryption process takes approx. 6786 cycles
  Basic decryption process takes approx. 6786 cycles
 The code has several sections that are only needed for the Verilog test bench
 The code has several sections that are only needed for the Verilog test bench
  and can be deleted in normal use. There is also some additional initialization
  and can be deleted in normal use. There is also some additional initialization
  code that only needs to be done once and could be replaced by the host putting
  code that only needs to be done once and could be replaced by the host putting
  the correct values in the appropriate RAM locations. These sections are marked
  the correct values in the appropriate RAM locations. These sections are marked
  in the code. The starting address of the F Table in memory shouldn't be critical
  in the code. The starting address of the F Table in memory shouldn't be critical
  although starting on a 256 byte boundary is convenient for debugging. The
  although starting on a 256 byte boundary is convenient for debugging. The
  algorithm variables use 8 bit address offset calculations so care should be
  algorithm variables use 8 bit address offset calculations so care should be
  taken if the key is saved in a memory range that crosses an 8 bit addressing
  taken if the key is saved in a memory range that crosses an 8 bit addressing
  boundary.
  boundary. The G function is coded as a subroutine that is called twice, some
 
  speed could be gained if this code is placed in-line at the expense of a
 
  small increase in code size.
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.