syslog-ng source
slog.c File Reference
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <openssl/cmac.h>
#include <openssl/rand.h>
#include <openssl/evp.h>
#include <openssl/sha.h>
#include "messages.h"
#include "slog.h"
Include dependency graph for slog.c:

Macros

#define LONG_OPT_INDICATOR   "--"
 
#define SHORT_OPT_INDICATOR   "-"
 

Functions

void cond_msg_error (GError *myError, char *errorMsg)
 
void deriveSubKeys (unsigned char *mainKey, unsigned char *encKey, unsigned char *MACKey)
 
void deriveEncSubKey (unsigned char *mainKey, unsigned char *encKey)
 
void deriveMACSubKey (unsigned char *mainKey, unsigned char *MACKey)
 
int sLogEncrypt (unsigned char *plaintext, int plaintext_len, unsigned char *key, unsigned char *iv, unsigned char *ciphertext, unsigned char *tag)
 
int sLogDecrypt (unsigned char *ciphertext, int ciphertext_len, unsigned char *tag, unsigned char *key, unsigned char *iv, unsigned char *plaintext)
 
void sLogEntry (guint64 numberOfLogEntries, GString *text, unsigned char *mainKey, unsigned char *inputBigMac, GString *output, unsigned char *outputBigMac, gsize outputBigMac_capacity)
 
void deriveKey (unsigned char *dst, guint64 index, guint64 currentKey)
 
guchar * convertToBin (char *input, gsize *outLen)
 
gchar * convertToBase64 (unsigned char *input, gsize len)
 
void cmac (unsigned char *key, const void *input, gsize length, unsigned char *out, gsize *outlen, gsize out_capacity)
 
void evolveKey (unsigned char *key)
 
void PRF (unsigned char *key, unsigned char *originalInput, guint64 inputLength, unsigned char *output, guint64 outputLength)
 
int generateMasterKey (guchar *masterkey)
 
int deriveHostKey (guchar *masterkey, gchar *macAddr, gchar *serial, guchar *hostkey)
 
int writeBigMAC (gchar *filename, char *outputBuffer)
 
int readBigMAC (gchar *filename, char *outputBuffer)
 
int readKey (char *destKey, guint64 *destCounter, gchar *keypath)
 
int writeKey (char *key, guint64 counter, gchar *keypath)
 
int iterateBuffer (guint64 entriesInBuffer, GString **input, guint64 *nextLogEntry, unsigned char *mainKey, unsigned char *keyZero, guint keyNumber, GString **output, guint64 *numberOfLogEntries, unsigned char *cmac_tag, gsize cmac_tag_capacity, GHashTable *tab)
 
int finalizeVerify (guint64 startingEntry, guint64 entriesInFile, unsigned char *bigMac, unsigned char *cmac_tag, GHashTable *tab)
 
int initVerify (guint64 entriesInFile, unsigned char *mainKey, guint64 *nextLogEntry, guint64 *startingEntry, GString **input, GHashTable **tab)
 
int iterativeFileVerify (unsigned char *previousMAC, unsigned char *mainKey, char *inputFileName, unsigned char *bigMAC, char *outputFileName, guint64 entriesInFile, int chunkLength, guint64 keyNumber)
 
int fileVerify (unsigned char *mainKey, char *inputFileName, char *outputFileName, unsigned char *bigMac, guint64 entriesInFile, int chunkLength)
 
int slog_usage (GOptionContext *ctx, GOptionGroup *grp, GString *errormsg)
 
gboolean validFileNameArg (const gchar *option_name, const gchar *value, gpointer data, GError **error)
 

Macro Definition Documentation

◆ LONG_OPT_INDICATOR

#define LONG_OPT_INDICATOR   "--"

◆ SHORT_OPT_INDICATOR

#define SHORT_OPT_INDICATOR   "-"

Function Documentation

◆ cmac()

void cmac ( unsigned char *  key,
const void *  input,
gsize  length,
unsigned char *  out,
gsize *  outlen,
gsize  out_capacity 
)

◆ cond_msg_error()

void cond_msg_error ( GError *  myError,
char *  errorMsg 
)

◆ convertToBase64()

gchar* convertToBase64 ( unsigned char *  input,
gsize  len 
)

◆ convertToBin()

guchar* convertToBin ( char *  input,
gsize *  outLen 
)

◆ deriveEncSubKey()

void deriveEncSubKey ( unsigned char *  mainKey,
unsigned char *  encKey 
)

◆ deriveHostKey()

int deriveHostKey ( guchar *  masterkey,
gchar *  macAddr,
gchar *  serial,
guchar *  hostkey 
)

◆ deriveKey()

void deriveKey ( unsigned char *  dst,
guint64  index,
guint64  currentKey 
)

◆ deriveMACSubKey()

void deriveMACSubKey ( unsigned char *  mainKey,
unsigned char *  MACKey 
)

◆ deriveSubKeys()

void deriveSubKeys ( unsigned char *  mainKey,
unsigned char *  encKey,
unsigned char *  MACKey 
)

◆ evolveKey()

void evolveKey ( unsigned char *  key)

◆ fileVerify()

int fileVerify ( unsigned char *  mainKey,
char *  inputFileName,
char *  outputFileName,
unsigned char *  bigMac,
guint64  entriesInFile,
int  chunkLength 
)

◆ finalizeVerify()

int finalizeVerify ( guint64  startingEntry,
guint64  entriesInFile,
unsigned char *  bigMac,
unsigned char *  cmac_tag,
GHashTable *  tab 
)

◆ generateMasterKey()

int generateMasterKey ( guchar *  masterkey)

◆ initVerify()

int initVerify ( guint64  entriesInFile,
unsigned char *  mainKey,
guint64 *  nextLogEntry,
guint64 *  startingEntry,
GString **  input,
GHashTable **  tab 
)

◆ iterateBuffer()

int iterateBuffer ( guint64  entriesInBuffer,
GString **  input,
guint64 *  nextLogEntry,
unsigned char *  mainKey,
unsigned char *  keyZero,
guint  keyNumber,
GString **  output,
guint64 *  numberOfLogEntries,
unsigned char *  cmac_tag,
gsize  cmac_tag_capacity,
GHashTable *  tab 
)

◆ iterativeFileVerify()

int iterativeFileVerify ( unsigned char *  previousMAC,
unsigned char *  mainKey,
char *  inputFileName,
unsigned char *  bigMAC,
char *  outputFileName,
guint64  entriesInFile,
int  chunkLength,
guint64  keyNumber 
)

◆ PRF()

void PRF ( unsigned char *  key,
unsigned char *  originalInput,
guint64  inputLength,
unsigned char *  output,
guint64  outputLength 
)

◆ readBigMAC()

int readBigMAC ( gchar *  filename,
char *  outputBuffer 
)

◆ readKey()

int readKey ( char *  destKey,
guint64 *  destCounter,
gchar *  keypath 
)

◆ slog_usage()

int slog_usage ( GOptionContext *  ctx,
GOptionGroup *  grp,
GString *  errormsg 
)

◆ sLogDecrypt()

int sLogDecrypt ( unsigned char *  ciphertext,
int  ciphertext_len,
unsigned char *  tag,
unsigned char *  key,
unsigned char *  iv,
unsigned char *  plaintext 
)

◆ sLogEncrypt()

int sLogEncrypt ( unsigned char *  plaintext,
int  plaintext_len,
unsigned char *  key,
unsigned char *  iv,
unsigned char *  ciphertext,
unsigned char *  tag 
)

◆ sLogEntry()

void sLogEntry ( guint64  numberOfLogEntries,
GString *  text,
unsigned char *  mainKey,
unsigned char *  inputBigMac,
GString *  output,
unsigned char *  outputBigMac,
gsize  outputBigMac_capacity 
)

◆ validFileNameArg()

gboolean validFileNameArg ( const gchar *  option_name,
const gchar *  value,
gpointer  data,
GError **  error 
)

◆ writeBigMAC()

int writeBigMAC ( gchar *  filename,
char *  outputBuffer 
)

◆ writeKey()

int writeKey ( char *  key,
guint64  counter,
gchar *  keypath 
)