Header And Logo

PostgreSQL
| The world's most advanced open source database.

Data Structures | Defines | Typedefs | Functions

sha2.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _SHA256_CTX
struct  _SHA512_CTX

Defines

#define SHA256_Init   pg_SHA256_Init
#define SHA256_Update   pg_SHA256_Update
#define SHA256_Final   pg_SHA256_Final
#define SHA384_Init   pg_SHA384_Init
#define SHA384_Update   pg_SHA384_Update
#define SHA384_Final   pg_SHA384_Final
#define SHA512_Init   pg_SHA512_Init
#define SHA512_Update   pg_SHA512_Update
#define SHA512_Final   pg_SHA512_Final
#define SHA224_BLOCK_LENGTH   64
#define SHA224_DIGEST_LENGTH   28
#define SHA224_DIGEST_STRING_LENGTH   (SHA224_DIGEST_LENGTH * 2 + 1)
#define SHA256_BLOCK_LENGTH   64
#define SHA256_DIGEST_LENGTH   32
#define SHA256_DIGEST_STRING_LENGTH   (SHA256_DIGEST_LENGTH * 2 + 1)
#define SHA384_BLOCK_LENGTH   128
#define SHA384_DIGEST_LENGTH   48
#define SHA384_DIGEST_STRING_LENGTH   (SHA384_DIGEST_LENGTH * 2 + 1)
#define SHA512_BLOCK_LENGTH   128
#define SHA512_DIGEST_LENGTH   64
#define SHA512_DIGEST_STRING_LENGTH   (SHA512_DIGEST_LENGTH * 2 + 1)

Typedefs

typedef struct _SHA256_CTX SHA256_CTX
typedef struct _SHA512_CTX SHA512_CTX
typedef SHA256_CTX SHA224_CTX
typedef SHA512_CTX SHA384_CTX

Functions

void SHA224_Init (SHA224_CTX *)
void SHA224_Update (SHA224_CTX *, const uint8 *, size_t)
void SHA224_Final (uint8[SHA224_DIGEST_LENGTH], SHA224_CTX *)
void SHA256_Init (SHA256_CTX *)
void SHA256_Update (SHA256_CTX *, const uint8 *, size_t)
void SHA256_Final (uint8[SHA256_DIGEST_LENGTH], SHA256_CTX *)
void SHA384_Init (SHA384_CTX *)
void SHA384_Update (SHA384_CTX *, const uint8 *, size_t)
void SHA384_Final (uint8[SHA384_DIGEST_LENGTH], SHA384_CTX *)
void SHA512_Init (SHA512_CTX *)
void SHA512_Update (SHA512_CTX *, const uint8 *, size_t)
void SHA512_Final (uint8[SHA512_DIGEST_LENGTH], SHA512_CTX *)

Define Documentation

#define SHA224_BLOCK_LENGTH   64

Definition at line 53 of file sha2.h.

#define SHA224_DIGEST_LENGTH   28

Definition at line 54 of file sha2.h.

Referenced by SHA224_Final().

#define SHA224_DIGEST_STRING_LENGTH   (SHA224_DIGEST_LENGTH * 2 + 1)

Definition at line 55 of file sha2.h.

#define SHA256_BLOCK_LENGTH   64

Definition at line 56 of file sha2.h.

Referenced by SHA224_Init(), SHA256_Init(), SHA256_Last(), and SHA256_Update().

#define SHA256_DIGEST_LENGTH   32

Definition at line 57 of file sha2.h.

Referenced by SHA224_Init(), SHA256_Final(), and SHA256_Init().

#define SHA256_DIGEST_STRING_LENGTH   (SHA256_DIGEST_LENGTH * 2 + 1)

Definition at line 58 of file sha2.h.

#define SHA256_Final   pg_SHA256_Final

Definition at line 44 of file sha2.h.

Referenced by int_sha256_finish(), and md_result().

#define SHA256_Init   pg_SHA256_Init

Definition at line 42 of file sha2.h.

Referenced by int_sha256_reset(), and md_init().

#define SHA256_Update   pg_SHA256_Update

Definition at line 43 of file sha2.h.

Referenced by int_sha256_update(), md_update(), and SHA224_Update().

#define SHA384_BLOCK_LENGTH   128

Definition at line 59 of file sha2.h.

Referenced by SHA384_Init().

#define SHA384_DIGEST_LENGTH   48

Definition at line 60 of file sha2.h.

Referenced by SHA384_Final().

#define SHA384_DIGEST_STRING_LENGTH   (SHA384_DIGEST_LENGTH * 2 + 1)

Definition at line 61 of file sha2.h.

#define SHA384_Final   pg_SHA384_Final

Definition at line 47 of file sha2.h.

Referenced by int_sha384_finish().

#define SHA384_Init   pg_SHA384_Init

Definition at line 45 of file sha2.h.

Referenced by int_sha384_reset().

#define SHA384_Update   pg_SHA384_Update

Definition at line 46 of file sha2.h.

Referenced by int_sha384_update().

#define SHA512_BLOCK_LENGTH   128

Definition at line 62 of file sha2.h.

Referenced by SHA512_Init(), SHA512_Last(), and SHA512_Update().

#define SHA512_DIGEST_LENGTH   64

Definition at line 63 of file sha2.h.

Referenced by SHA384_Init(), SHA512_Final(), and SHA512_Init().

#define SHA512_DIGEST_STRING_LENGTH   (SHA512_DIGEST_LENGTH * 2 + 1)

Definition at line 64 of file sha2.h.

#define SHA512_Final   pg_SHA512_Final

Definition at line 50 of file sha2.h.

Referenced by int_sha512_finish().

#define SHA512_Init   pg_SHA512_Init

Definition at line 48 of file sha2.h.

Referenced by int_sha512_reset().

#define SHA512_Update   pg_SHA512_Update

Definition at line 49 of file sha2.h.

Referenced by int_sha512_update(), and SHA384_Update().


Typedef Documentation

Definition at line 81 of file sha2.h.

typedef struct _SHA256_CTX SHA256_CTX

Definition at line 82 of file sha2.h.

typedef struct _SHA512_CTX SHA512_CTX

Function Documentation

void SHA224_Final ( uint8  [SHA224_DIGEST_LENGTH],
SHA224_CTX  
)
void SHA224_Init ( SHA224_CTX  ) 

Definition at line 952 of file sha2.c.

References _SHA256_CTX::bitcount, _SHA256_CTX::buffer, NULL, sha224_initial_hash_value, SHA256_BLOCK_LENGTH, SHA256_DIGEST_LENGTH, and _SHA256_CTX::state.

Referenced by int_sha224_reset().

{
    if (context == NULL)
        return;
    memcpy(context->state, sha224_initial_hash_value, SHA256_DIGEST_LENGTH);
    memset(context->buffer, 0, SHA256_BLOCK_LENGTH);
    context->bitcount = 0;
}

void SHA224_Update ( SHA224_CTX ,
const uint8 ,
size_t   
)

Definition at line 962 of file sha2.c.

References SHA256_Update.

Referenced by int_sha224_update().

{
    SHA256_Update((SHA256_CTX *) context, data, len);
}

void SHA256_Final ( uint8  [SHA256_DIGEST_LENGTH],
SHA256_CTX  
)
void SHA256_Init ( SHA256_CTX  ) 

Definition at line 253 of file sha2.c.

References _SHA256_CTX::bitcount, _SHA256_CTX::buffer, NULL, SHA256_BLOCK_LENGTH, SHA256_DIGEST_LENGTH, sha256_initial_hash_value, and _SHA256_CTX::state.

{
    if (context == NULL)
        return;
    memcpy(context->state, sha256_initial_hash_value, SHA256_DIGEST_LENGTH);
    memset(context->buffer, 0, SHA256_BLOCK_LENGTH);
    context->bitcount = 0;
}

void SHA256_Update ( SHA256_CTX ,
const uint8 ,
size_t   
)

Definition at line 450 of file sha2.c.

References _SHA256_CTX::bitcount, _SHA256_CTX::buffer, SHA256_BLOCK_LENGTH, and SHA256_Transform().

{
    size_t      freespace,
                usedspace;

    /* Calling with no data is valid (we do nothing) */
    if (len == 0)
        return;

    usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH;
    if (usedspace > 0)
    {
        /* Calculate how much free space is available in the buffer */
        freespace = SHA256_BLOCK_LENGTH - usedspace;

        if (len >= freespace)
        {
            /* Fill the buffer completely and process it */
            memcpy(&context->buffer[usedspace], data, freespace);
            context->bitcount += freespace << 3;
            len -= freespace;
            data += freespace;
            SHA256_Transform(context, context->buffer);
        }
        else
        {
            /* The buffer is not yet full */
            memcpy(&context->buffer[usedspace], data, len);
            context->bitcount += len << 3;
            /* Clean up: */
            usedspace = freespace = 0;
            return;
        }
    }
    while (len >= SHA256_BLOCK_LENGTH)
    {
        /* Process as many complete blocks as we can */
        SHA256_Transform(context, data);
        context->bitcount += SHA256_BLOCK_LENGTH << 3;
        len -= SHA256_BLOCK_LENGTH;
        data += SHA256_BLOCK_LENGTH;
    }
    if (len > 0)
    {
        /* There's left-overs, so save 'em */
        memcpy(context->buffer, data, len);
        context->bitcount += len << 3;
    }
    /* Clean up: */
    usedspace = freespace = 0;
}

void SHA384_Final ( uint8  [SHA384_DIGEST_LENGTH],
SHA384_CTX  
)
void SHA384_Init ( SHA384_CTX  ) 

Definition at line 908 of file sha2.c.

References _SHA512_CTX::bitcount, _SHA512_CTX::buffer, NULL, SHA384_BLOCK_LENGTH, sha384_initial_hash_value, SHA512_DIGEST_LENGTH, and _SHA512_CTX::state.

{
    if (context == NULL)
        return;
    memcpy(context->state, sha384_initial_hash_value, SHA512_DIGEST_LENGTH);
    memset(context->buffer, 0, SHA384_BLOCK_LENGTH);
    context->bitcount[0] = context->bitcount[1] = 0;
}

void SHA384_Update ( SHA384_CTX ,
const uint8 ,
size_t   
)

Definition at line 918 of file sha2.c.

References SHA512_Update.

{
    SHA512_Update((SHA512_CTX *) context, data, len);
}

void SHA512_Final ( uint8  [SHA512_DIGEST_LENGTH],
SHA512_CTX  
)
void SHA512_Init ( SHA512_CTX  ) 

Definition at line 579 of file sha2.c.

References _SHA512_CTX::bitcount, _SHA512_CTX::buffer, NULL, SHA512_BLOCK_LENGTH, SHA512_DIGEST_LENGTH, sha512_initial_hash_value, and _SHA512_CTX::state.

{
    if (context == NULL)
        return;
    memcpy(context->state, sha512_initial_hash_value, SHA512_DIGEST_LENGTH);
    memset(context->buffer, 0, SHA512_BLOCK_LENGTH);
    context->bitcount[0] = context->bitcount[1] = 0;
}

void SHA512_Update ( SHA512_CTX ,
const uint8 ,
size_t   
)

Definition at line 776 of file sha2.c.

References ADDINC128, _SHA512_CTX::bitcount, _SHA512_CTX::buffer, SHA512_BLOCK_LENGTH, and SHA512_Transform().

{
    size_t      freespace,
                usedspace;

    /* Calling with no data is valid (we do nothing) */
    if (len == 0)
        return;

    usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH;
    if (usedspace > 0)
    {
        /* Calculate how much free space is available in the buffer */
        freespace = SHA512_BLOCK_LENGTH - usedspace;

        if (len >= freespace)
        {
            /* Fill the buffer completely and process it */
            memcpy(&context->buffer[usedspace], data, freespace);
            ADDINC128(context->bitcount, freespace << 3);
            len -= freespace;
            data += freespace;
            SHA512_Transform(context, context->buffer);
        }
        else
        {
            /* The buffer is not yet full */
            memcpy(&context->buffer[usedspace], data, len);
            ADDINC128(context->bitcount, len << 3);
            /* Clean up: */
            usedspace = freespace = 0;
            return;
        }
    }
    while (len >= SHA512_BLOCK_LENGTH)
    {
        /* Process as many complete blocks as we can */
        SHA512_Transform(context, data);
        ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3);
        len -= SHA512_BLOCK_LENGTH;
        data += SHA512_BLOCK_LENGTH;
    }
    if (len > 0)
    {
        /* There's left-overs, so save 'em */
        memcpy(context->buffer, data, len);
        ADDINC128(context->bitcount, len << 3);
    }
    /* Clean up: */
    usedspace = freespace = 0;
}