MagickCore 7.0.10
chacha.c File Reference
#include "wizard/studio.h"
#include "wizard/chacha.h"
#include "wizard/exception.h"
#include "wizard/exception-private.h"
#include "wizard/memory_.h"
Include dependency graph for chacha.c:

Go to the source code of this file.

Data Structures

struct  _ChachaInfo
 

Macros

#define ChachaBlocksize   64
 
#define PushChachaWord(p)
 
#define ChachaAdd(v, w)   ((unsigned int) ((v)+(w)) & 0xFFFFFFFFU)
 
#define ChachaQuarterRound(a, b, c, d)
 
#define ChachaRotate(v, n)    (((unsigned int) ((v) << (n)) & 0xFFFFFFFFU) | ((v) >> (32-(n))))
 
#define PopChachaWord(p, v)
 

Functions

WizardExport ChachaInfoAcquireChachaInfo (void)
 
WizardExport void DecipherChachaBlock (ChachaInfo *chacha_info, const unsigned char *ciphertext, unsigned char *plaintext)
 
WizardExport ChachaInfoDestroyChachaInfo (ChachaInfo *chacha_info)
 
WizardExport void EncipherChachaBlock (ChachaInfo *chacha_info, const unsigned char *plaintext, unsigned char *ciphertext)
 
WizardExport unsigned int GetChachaBlocksize (const ChachaInfo *chacha_info)
 
WizardExport void SetChachaKey (ChachaInfo *chacha_info, const StringInfo *key)
 
WizardExport void SetChachaNonce (ChachaInfo *chacha_info, const unsigned char *nonce, const unsigned char *counter)
 

Macro Definition Documentation

◆ ChachaAdd

#define ChachaAdd (   v,
 
)    ((unsigned int) ((v)+(w)) & 0xFFFFFFFFU)

◆ ChachaBlocksize

#define ChachaBlocksize   64

Definition at line 70 of file chacha.c.

◆ ChachaQuarterRound

#define ChachaQuarterRound (   a,
  b,
  c,
 
)
Value:
{ \
a=ChachaAdd(a,b); d=ChachaRotate((d) ^ (a),16); \
c=ChachaAdd(c,d); b=ChachaRotate((b) ^ (c),12); \
a=ChachaAdd(a,b); d=ChachaRotate((d) ^ (a), 8); \
c=ChachaAdd(c,d); b=ChachaRotate((b) ^ (c), 7); \
}
#define ChachaRotate(v, n)
#define ChachaAdd(v, w)

◆ ChachaRotate

#define ChachaRotate (   v,
 
)     (((unsigned int) ((v) << (n)) & 0xFFFFFFFFU) | ((v) >> (32-(n))))

◆ PopChachaWord

#define PopChachaWord (   p,
 
)
Value:
{ \
(p)[0]=((unsigned char) (((v) >> 0) & 0xff)); \
(p)[1]=((unsigned char) (((v) >> 8) & 0xff)); \
(p)[2]=((unsigned char) (((v) >> 16) & 0xff)); \
(p)[3]=((unsigned char) (((v) >> 24) & 0xff)); \
}

◆ PushChachaWord

#define PushChachaWord (   p)
Value:
(((unsigned int) ((p)[0]) << 0) | \
((unsigned int) ((p)[1]) << 8) | \
((unsigned int) ((p)[2]) << 16) | \
((unsigned int) ((p)[3]) << 24))

Definition at line 71 of file chacha.c.

Function Documentation

◆ AcquireChachaInfo()

◆ DecipherChachaBlock()

WizardExport void DecipherChachaBlock ( ChachaInfo chacha_info,
const unsigned char *  ciphertext,
unsigned char *  plaintext 
)

Definition at line 138 of file chacha.c.

References EncipherChachaBlock().

Referenced by AcquireCipherInfo().

◆ DestroyChachaInfo()

◆ EncipherChachaBlock()

WizardExport void EncipherChachaBlock ( ChachaInfo chacha_info,
const unsigned char *  plaintext,
unsigned char *  ciphertext 
)

◆ GetChachaBlocksize()

WizardExport unsigned int GetChachaBlocksize ( const ChachaInfo chacha_info)

◆ SetChachaKey()

◆ SetChachaNonce()

WizardExport void SetChachaNonce ( ChachaInfo chacha_info,
const unsigned char *  nonce,
const unsigned char *  counter 
)

Definition at line 468 of file chacha.c.

References _ChachaInfo::key, and PushChachaWord.