Raven Core  3.0.0
P2P Digital Currency
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Macros | Functions
cubehash.c File Reference
#include <stddef.h>
#include <string.h>
#include <limits.h>
#include "sph_cubehash.h"
Include dependency graph for cubehash.c:

Go to the source code of this file.

Macros

#define SPH_CUBEHASH_UNROLL   0
 
#define SPH_CUBEHASH_NOCOPY   0
 
#define T32   SPH_T32
 
#define ROTL32   SPH_ROTL32
 
#define DECL_STATE
 
#define READ_STATE(cc)
 
#define WRITE_STATE(cc)
 
#define INPUT_BLOCK
 
#define ROUND_EVEN
 
#define ROUND_ODD
 
#define SIXTEEN_ROUNDS
 

Functions

void sph_cubehash224_init (void *cc)
 Initialize a CubeHash-224 context. More...
 
void sph_cubehash224 (void *cc, const void *data, size_t len)
 Process some data bytes. More...
 
void sph_cubehash224_close (void *cc, void *dst)
 Terminate the current CubeHash-224 computation and output the result into the provided buffer. More...
 
void sph_cubehash224_addbits_and_close (void *cc, unsigned ub, unsigned n, void *dst)
 Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (28 bytes). More...
 
void sph_cubehash256_init (void *cc)
 Initialize a CubeHash-256 context. More...
 
void sph_cubehash256 (void *cc, const void *data, size_t len)
 Process some data bytes. More...
 
void sph_cubehash256_close (void *cc, void *dst)
 Terminate the current CubeHash-256 computation and output the result into the provided buffer. More...
 
void sph_cubehash256_addbits_and_close (void *cc, unsigned ub, unsigned n, void *dst)
 Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (32 bytes). More...
 
void sph_cubehash384_init (void *cc)
 Initialize a CubeHash-384 context. More...
 
void sph_cubehash384 (void *cc, const void *data, size_t len)
 Process some data bytes. More...
 
void sph_cubehash384_close (void *cc, void *dst)
 Terminate the current CubeHash-384 computation and output the result into the provided buffer. More...
 
void sph_cubehash384_addbits_and_close (void *cc, unsigned ub, unsigned n, void *dst)
 Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (48 bytes). More...
 
void sph_cubehash512_init (void *cc)
 Initialize a CubeHash-512 context. More...
 
void sph_cubehash512 (void *cc, const void *data, size_t len)
 Process some data bytes. More...
 
void sph_cubehash512_close (void *cc, void *dst)
 Terminate the current CubeHash-512 computation and output the result into the provided buffer. More...
 
void sph_cubehash512_addbits_and_close (void *cc, unsigned ub, unsigned n, void *dst)
 Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (64 bytes). More...
 

Macro Definition Documentation

◆ DECL_STATE

#define DECL_STATE
Value:
sph_u32 x0, x1, x2, x3, x4, x5, x6, x7; \
sph_u32 x8, x9, xa, xb, xc, xd, xe, xf; \
sph_u32 xg, xh, xi, xj, xk, xl, xm, xn; \
sph_u32 xo, xp, xq, xr, xs, xt, xu, xv;
unsigned long sph_u32
Definition: sph_types.h:870

Definition at line 178 of file cubehash.c.

◆ INPUT_BLOCK

#define INPUT_BLOCK
Value:
do { \
x0 ^= sph_dec32le_aligned(buf + 0); \
x1 ^= sph_dec32le_aligned(buf + 4); \
x2 ^= sph_dec32le_aligned(buf + 8); \
x3 ^= sph_dec32le_aligned(buf + 12); \
x4 ^= sph_dec32le_aligned(buf + 16); \
x5 ^= sph_dec32le_aligned(buf + 20); \
x6 ^= sph_dec32le_aligned(buf + 24); \
x7 ^= sph_dec32le_aligned(buf + 28); \
} while (0)

Definition at line 256 of file cubehash.c.

◆ READ_STATE

#define READ_STATE (   cc)

Definition at line 184 of file cubehash.c.

◆ ROTL32

#define ROTL32   SPH_ROTL32

Definition at line 135 of file cubehash.c.

◆ ROUND_EVEN

#define ROUND_EVEN

Definition at line 267 of file cubehash.c.

◆ ROUND_ODD

#define ROUND_ODD

Definition at line 366 of file cubehash.c.

◆ SIXTEEN_ROUNDS

#define SIXTEEN_ROUNDS
Value:
do { \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
ROUND_EVEN; \
ROUND_ODD; \
} while (0)

Definition at line 513 of file cubehash.c.

◆ SPH_CUBEHASH_NOCOPY

#define SPH_CUBEHASH_NOCOPY   0

Definition at line 69 of file cubehash.c.

◆ SPH_CUBEHASH_UNROLL

#define SPH_CUBEHASH_UNROLL   0

Definition at line 66 of file cubehash.c.

◆ T32

#define T32   SPH_T32

Definition at line 134 of file cubehash.c.

◆ WRITE_STATE

#define WRITE_STATE (   cc)

Definition at line 219 of file cubehash.c.

Function Documentation

◆ sph_cubehash224()

void sph_cubehash224 ( void *  cc,
const void *  data,
size_t  len 
)

Process some data bytes.

It is acceptable that len is zero (in which case this function does nothing).

Parameters
ccthe CubeHash-224 context
datathe input data
lenthe input data length (in bytes)

Definition at line 615 of file cubehash.c.

◆ sph_cubehash224_addbits_and_close()

void sph_cubehash224_addbits_and_close ( void *  cc,
unsigned  ub,
unsigned  n,
void *  dst 
)

Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (28 bytes).

If bit number i in ub has value 2^i, then the extra bits are those numbered 7 downto 8-n (this is the big-endian convention at the byte level). The context is automatically reinitialized.

Parameters
ccthe CubeHash-224 context
ubthe extra bits
nthe number of extra bits (0 to 7)
dstthe destination buffer

Definition at line 629 of file cubehash.c.

Here is the caller graph for this function:

◆ sph_cubehash224_close()

void sph_cubehash224_close ( void *  cc,
void *  dst 
)

Terminate the current CubeHash-224 computation and output the result into the provided buffer.

The destination buffer must be wide enough to accomodate the result (28 bytes). The context is automatically reinitialized.

Parameters
ccthe CubeHash-224 context
dstthe destination buffer

Definition at line 622 of file cubehash.c.

Here is the call graph for this function:

◆ sph_cubehash224_init()

void sph_cubehash224_init ( void *  cc)

Initialize a CubeHash-224 context.

This process performs no memory allocation.

Parameters
ccthe CubeHash-224 context (pointer to a sph_cubehash224_context)

Definition at line 608 of file cubehash.c.

◆ sph_cubehash256()

void sph_cubehash256 ( void *  cc,
const void *  data,
size_t  len 
)

Process some data bytes.

It is acceptable that len is zero (in which case this function does nothing).

Parameters
ccthe CubeHash-256 context
datathe input data
lenthe input data length (in bytes)

Definition at line 644 of file cubehash.c.

◆ sph_cubehash256_addbits_and_close()

void sph_cubehash256_addbits_and_close ( void *  cc,
unsigned  ub,
unsigned  n,
void *  dst 
)

Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (32 bytes).

If bit number i in ub has value 2^i, then the extra bits are those numbered 7 downto 8-n (this is the big-endian convention at the byte level). The context is automatically reinitialized.

Parameters
ccthe CubeHash-256 context
ubthe extra bits
nthe number of extra bits (0 to 7)
dstthe destination buffer

Definition at line 658 of file cubehash.c.

Here is the caller graph for this function:

◆ sph_cubehash256_close()

void sph_cubehash256_close ( void *  cc,
void *  dst 
)

Terminate the current CubeHash-256 computation and output the result into the provided buffer.

The destination buffer must be wide enough to accomodate the result (32 bytes). The context is automatically reinitialized.

Parameters
ccthe CubeHash-256 context
dstthe destination buffer

Definition at line 651 of file cubehash.c.

Here is the call graph for this function:

◆ sph_cubehash256_init()

void sph_cubehash256_init ( void *  cc)

Initialize a CubeHash-256 context.

This process performs no memory allocation.

Parameters
ccthe CubeHash-256 context (pointer to a sph_cubehash256_context)

Definition at line 637 of file cubehash.c.

◆ sph_cubehash384()

void sph_cubehash384 ( void *  cc,
const void *  data,
size_t  len 
)

Process some data bytes.

It is acceptable that len is zero (in which case this function does nothing).

Parameters
ccthe CubeHash-384 context
datathe input data
lenthe input data length (in bytes)

Definition at line 673 of file cubehash.c.

◆ sph_cubehash384_addbits_and_close()

void sph_cubehash384_addbits_and_close ( void *  cc,
unsigned  ub,
unsigned  n,
void *  dst 
)

Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (48 bytes).

If bit number i in ub has value 2^i, then the extra bits are those numbered 7 downto 8-n (this is the big-endian convention at the byte level). The context is automatically reinitialized.

Parameters
ccthe CubeHash-384 context
ubthe extra bits
nthe number of extra bits (0 to 7)
dstthe destination buffer

Definition at line 687 of file cubehash.c.

Here is the caller graph for this function:

◆ sph_cubehash384_close()

void sph_cubehash384_close ( void *  cc,
void *  dst 
)

Terminate the current CubeHash-384 computation and output the result into the provided buffer.

The destination buffer must be wide enough to accomodate the result (48 bytes). The context is automatically reinitialized.

Parameters
ccthe CubeHash-384 context
dstthe destination buffer

Definition at line 680 of file cubehash.c.

Here is the call graph for this function:

◆ sph_cubehash384_init()

void sph_cubehash384_init ( void *  cc)

Initialize a CubeHash-384 context.

This process performs no memory allocation.

Parameters
ccthe CubeHash-384 context (pointer to a sph_cubehash384_context)

Definition at line 666 of file cubehash.c.

◆ sph_cubehash512()

void sph_cubehash512 ( void *  cc,
const void *  data,
size_t  len 
)

Process some data bytes.

It is acceptable that len is zero (in which case this function does nothing).

Parameters
ccthe CubeHash-512 context
datathe input data
lenthe input data length (in bytes)

Definition at line 702 of file cubehash.c.

Here is the caller graph for this function:

◆ sph_cubehash512_addbits_and_close()

void sph_cubehash512_addbits_and_close ( void *  cc,
unsigned  ub,
unsigned  n,
void *  dst 
)

Add a few additional bits (0 to 7) to the current computation, then terminate it and output the result in the provided buffer, which must be wide enough to accomodate the result (64 bytes).

If bit number i in ub has value 2^i, then the extra bits are those numbered 7 downto 8-n (this is the big-endian convention at the byte level). The context is automatically reinitialized.

Parameters
ccthe CubeHash-512 context
ubthe extra bits
nthe number of extra bits (0 to 7)
dstthe destination buffer

Definition at line 716 of file cubehash.c.

Here is the caller graph for this function:

◆ sph_cubehash512_close()

void sph_cubehash512_close ( void *  cc,
void *  dst 
)

Terminate the current CubeHash-512 computation and output the result into the provided buffer.

The destination buffer must be wide enough to accomodate the result (64 bytes). The context is automatically reinitialized.

Parameters
ccthe CubeHash-512 context
dstthe destination buffer

Definition at line 709 of file cubehash.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sph_cubehash512_init()

void sph_cubehash512_init ( void *  cc)

Initialize a CubeHash-512 context.

This process performs no memory allocation.

Parameters
ccthe CubeHash-512 context (pointer to a sph_cubehash512_context)

Definition at line 695 of file cubehash.c.

Here is the caller graph for this function: