Giter Site home page Giter Site logo

cryptoaccel's Introduction

CryptoAccel

Use the on-chip cryptographic accelerator for symmetric cyphers and one-way hash algorithms.

This software may only be used with as part of a programmable processing unit (e.g. a microprocessor, microcontroller, or digital signal processor) supplied directly or indirectly from Freescale. See Freescale_License.txt for details.

AES

Perform an AES key expansion

void   mmcau_aes_set_key (const unsigned char *key,
                          const int            key_size,
                          unsigned char       *key_sch)

      *key        pointer to input key (128, 192, 256 bits in length)
       key_size   key_size in bits (128, 192, 256)
      *key_sch    pointer to key schedule output (44, 52, 60 longwords)

Encrypt a single 16-byte block

void   mmcau_aes_encrypt (const unsigned char *in,
                          const unsigned char *key_sch,
                          const int            nr,
                          unsigned char       *out)

      *in         pointer to 16-byte block of input plaintext
      *key_sch    pointer to key schedule (44, 52, 60 longwords)
       nr         number of AES rounds (10, 12, 14 = f(key_schedule))
      *out        pointer to 16-byte block of output ciphertext

      NOTE   Input and output blocks may overlap

Decrypt a single 16-byte block

void   mmcau_aes_decrypt (const unsigned char *in,
                          const unsigned char *key_sch,
                          const int            nr,
                          unsigned char       *out)

      *in         pointer to 16-byte block of input chiphertext
      *key_sch    pointer to key schedule (44, 52, 60 longwords)
       nr         number of AES rounds (10, 12, 14 = f(key_schedule))
      *out        pointer to 16-byte block of output plaintext

      NOTE   Input and output blocks may overlap

DES

Checks key parity

int    mmcau_des_chk_parity (const unsigned char *key)

      *key        pointer to 64-bit DES key with parity bits

    return
      0           no error
     -1           parity error

Encrypt a single 8-byte block

void     mmcau_des_encrypt (const unsigned char *in,
                            const unsigned char *key,
                            unsigned char       *out)

      *in         pointer to 8-byte block of input plaintext
      *key        pointer to 64-bit DES key with parity bits
      *out        pointer to 8-byte block of output ciphertext

      NOTE   Input and output blocks may overlap

Decrypt a single 8-byte block

void   mmcau_des_decrypt (const unsigned char *in,
                          const unsigned char *key,
                          unsigned char       *out)

      *in         pointer to 8-byte block of input ciphertext
      *key        pointer to 64-bit DES key with parity bits
      *out        pointer to 8-byte block of output plaintext

      NOTE   Input and output blocks may overlap

MD5

Initialize the MD5 state variables

void   mmcau_md5_initialize_output (const unsigned char *md_state)

      *md_state   pointer to 120-bit block of md5 state variables:
                  a,b,c,d

Update MD5 state variables for one or more input message blocks

void   mmcau_md5_hash_n (const unsigned char *msg_data,
                         const int            num_blks,
                         unsigned char       *md_state)

      *msg_data   pointer to start of input message data
       num_blks   number of 512-bit blocks to process
      *md_state   pointer to 128-bit block of MD5 state variables:
                  a,b,c,d

Update MD5 state variables for one or more input message blocks

void   mmcau_md5_update (const unsigned char *msg_data,
                         const int            num_blks,
                         unsigned char       *md_state)

      *msg_data   pointer to start of input message data
       num_blks   number of 512-bit blocks to process
      *md_state   pointer to 128-bit block of MD5 state variables: 
                  a,b,c,d

Perform MD5 hash algorithm for a single input message block

void   mmcau_md5_hash (const unsigned char *msg_data,
                       unsigned char       *md_state)

      *msg_data   pointer to start of input message data
      *md_state   pointer to 128-bit block of MD5 state variables:
                  a,b,c,d

SHA1

Initialize the SHA1 state variables

void   mmcau_sha1_initialize_output (const unsigned int *sha1_state)

      *sha1_state pointer to 160-bit block of SHA1 state variables:
                  a,b,c,d,e

Perform the hash and generate SHA1 state variables for one or more input message blocks

void   mmcau_sha1_hash (const unsigned char *msg_data,
                        const int            num_blks,
                        unsigned int        *sha1_state)

      *msg_data   pointer to start of input message data
       num_blks   number of 512-bit blocks to process
      *sha1_state pointer to 160-bit block of SHA1 state variables:
                  a,b,c,d,e

      NOTE   Input message and state variable output blocks must not overlap

Updates SHA1 state variable for one or more input message blocks

void   mmcau_sha1_update (const unsigned char *msg_data,
                          const int            num_blks,
                          unsigned int        *sha1_state)

      *msg_data   pointer to start of input message data
       num_blks   number of 512-bit blocks to process
      *sha1_state pointer to 160-bit block of SHA1 state variables:
                  a,b,c,d,e

Perform SHA1 hash algorithm on a single input message block

void   mmcau_sha1_update (const unsigned char *msg_data,
                          unsigned int        *sha1_state)

      *msg_data   pointer to start of input message data
      *sha1_state pointer to 160-bit block of SHA1 state variables:
                  a,b,c,d,e

SHA256

Initialize the hash output and checks the CAU hardware revision

int    mmcau_sha256_initialize_output (const unsigned int *output)

      *output     pointer to 256-bit message digest output

return
      0           no error -> CAU2 hardware present
     -1           error -> incorrect CAU hardware revision

Update SHA256 digest output for one or more message block arguments

void   mmcau_sha256_hash_n (const unsigned char *input,
                            int                  num_blks,
                            const unsigned int  *output)

      *input      pointer to start of input message
       input      number of 512-bit blocks to process
      *output     pointer to 256-bit message digest output

      NOTE   Input message and digest output blocks must not overlap

Update SHA256 state variables for one or more input message blocks

void   mmcau_sha256_update (const unsigned char *input,
                            const int            num_blks,
                            unsigned int        *output)

      *input      pointer to start of input message data
       num_blks   number of 512-bit blocks to process
      *output     pointer to 256-bit message digest output

Perform SHA256 hash algorithm for a single input message block

void   mmcau_sha256_hash (const unsigned char *input,
                          unsigned int        *output)

      *input      pointer to start of input message data
      *output     pointer to 256-bit message digest output

cryptoaccel's People

Contributors

paulstoffregen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.