Rizin
unix-like reverse engineering framework and cli tools
algo_xor8.c File Reference
#include <rz_hash.h>
#include <rz_util/rz_assert.h>
#include "../algorithms/xor/xor.h"

Go to the source code of this file.

Functions

static void * plugin_xor8_context_new ()
 
static void plugin_xor8_context_free (void *context)
 
static RzHashSize plugin_xor8_digest_size (void *context)
 
static RzHashSize plugin_xor8_block_size (void *context)
 
static bool plugin_xor8_init (void *context)
 
static bool plugin_xor8_update (void *context, const ut8 *data, ut64 size)
 
static bool plugin_xor8_final (void *context, ut8 *digest)
 
static bool plugin_xor8_small_block (const ut8 *data, ut64 size, ut8 **digest, RzHashSize *digest_size)
 

Variables

RzHashPlugin rz_hash_plugin_xor8
 
RZ_API RzLibStruct rizin_plugin
 

Function Documentation

◆ plugin_xor8_block_size()

static RzHashSize plugin_xor8_block_size ( void *  context)
static

Definition at line 21 of file algo_xor8.c.

21  {
23 }
#define RZ_HASH_XOR_BLOCK_LENGTH
Definition: xor.h:10

References RZ_HASH_XOR_BLOCK_LENGTH.

◆ plugin_xor8_context_free()

static void plugin_xor8_context_free ( void *  context)
static

Definition at line 13 of file algo_xor8.c.

13  {
14  free(context);
15 }
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130

References free().

◆ plugin_xor8_context_new()

static void* plugin_xor8_context_new ( )
static

Definition at line 9 of file algo_xor8.c.

9  {
10  return RZ_NEW0(RzXor8);
11 }
#define RZ_NEW0(x)
Definition: rz_types.h:284
ut8 RzXor8
Definition: xor.h:12

References RZ_NEW0.

◆ plugin_xor8_digest_size()

static RzHashSize plugin_xor8_digest_size ( void *  context)
static

Definition at line 17 of file algo_xor8.c.

17  {
19 }
#define RZ_HASH_XOR8_DIGEST_SIZE
Definition: xor.h:9

References RZ_HASH_XOR8_DIGEST_SIZE.

◆ plugin_xor8_final()

static bool plugin_xor8_final ( void *  context,
ut8 digest 
)
static

Definition at line 39 of file algo_xor8.c.

39  {
40  rz_return_val_if_fail(context && digest, false);
41 
42  rz_xor8_final(digest, (RzXor8 *)context);
43  return true;
44 }
#define rz_return_val_if_fail(expr, val)
Definition: rz_assert.h:108
bool rz_xor8_final(ut8 *digest, RzXor8 *ctx)
Definition: xor.c:23

References rz_return_val_if_fail, and rz_xor8_final().

◆ plugin_xor8_init()

static bool plugin_xor8_init ( void *  context)
static

Definition at line 25 of file algo_xor8.c.

25  {
27 
29  return true;
30 }
bool rz_xor8_init(RzXor8 *ctx)
Definition: xor.c:7

References rz_return_val_if_fail, and rz_xor8_init().

◆ plugin_xor8_small_block()

static bool plugin_xor8_small_block ( const ut8 data,
ut64  size,
ut8 **  digest,
RzHashSize digest_size 
)
static

Definition at line 46 of file algo_xor8.c.

46  {
47  rz_return_val_if_fail(data && digest, false);
49  if (!dgst) {
50  return false;
51  }
52 
53  RzXor8 ctx;
54  rz_xor8_init(&ctx);
55  rz_xor8_update(&ctx, data, size);
56  rz_xor8_final(dgst, &ctx);
57 
58  *digest = dgst;
59  if (digest_size) {
60  *digest_size = RZ_HASH_XOR8_DIGEST_SIZE;
61  }
62  return true;
63 }
voidpf void uLong size
Definition: ioapi.h:138
uint8_t ut8
Definition: lh5801.h:11
void * malloc(size_t size)
Definition: malloc.c:123
bool rz_xor8_update(RzXor8 *ctx, const ut8 *data, size_t len)
Definition: xor.c:13

References malloc(), RZ_HASH_XOR8_DIGEST_SIZE, rz_return_val_if_fail, rz_xor8_final(), rz_xor8_init(), and rz_xor8_update().

◆ plugin_xor8_update()

static bool plugin_xor8_update ( void *  context,
const ut8 data,
ut64  size 
)
static

Definition at line 32 of file algo_xor8.c.

32  {
33  rz_return_val_if_fail(context && data, false);
34 
35  rz_xor8_update((RzXor8 *)context, data, size);
36  return true;
37 }

References rz_return_val_if_fail, and rz_xor8_update().

Variable Documentation

◆ rizin_plugin

RZ_API RzLibStruct rizin_plugin
Initial value:
= {
.version = RZ_VERSION
}
RzHashPlugin rz_hash_plugin_xor8
Definition: algo_xor8.c:65
@ RZ_LIB_TYPE_HASH
Definition: rz_lib.h:82
#define RZ_VERSION
Definition: rz_version.h:8

Definition at line 81 of file algo_xor8.c.

◆ rz_hash_plugin_xor8

RzHashPlugin rz_hash_plugin_xor8
Initial value:
= {
.name = "xor8",
.license = "LGPL3",
.author = "deroad",
.support_hmac = false,
.context_new = plugin_xor8_context_new,
.context_free = plugin_xor8_context_free,
.digest_size = plugin_xor8_digest_size,
.block_size = plugin_xor8_block_size,
.update = plugin_xor8_update,
.small_block = plugin_xor8_small_block,
}
static bool plugin_xor8_final(void *context, ut8 *digest)
Definition: algo_xor8.c:39
static RzHashSize plugin_xor8_digest_size(void *context)
Definition: algo_xor8.c:17
static bool plugin_xor8_update(void *context, const ut8 *data, ut64 size)
Definition: algo_xor8.c:32
static RzHashSize plugin_xor8_block_size(void *context)
Definition: algo_xor8.c:21
static void * plugin_xor8_context_new()
Definition: algo_xor8.c:9
static bool plugin_xor8_init(void *context)
Definition: algo_xor8.c:25
static void plugin_xor8_context_free(void *context)
Definition: algo_xor8.c:13
static bool plugin_xor8_small_block(const ut8 *data, ut64 size, ut8 **digest, RzHashSize *digest_size)
Definition: algo_xor8.c:46

Definition at line 65 of file algo_xor8.c.