60 #define SignatureBlocksize 64 61 #define SignatureDigestsize 32 127 sizeof(*signature_info));
128 (void) memset(signature_info,0,
sizeof(*signature_info));
135 if (signature_info->
accumulator == (
unsigned int *) NULL)
145 return(signature_info);
176 if (signature_info->
accumulator != (
unsigned int *) NULL)
185 return(signature_info);
239 extent=((low_order >> 3) & 0x3f);
241 datum[extent++]=(
unsigned char) 0x80;
244 signature_info->
message)-8-extent);
248 signature_info->
message)-extent);
253 datum[56]=(
unsigned char) (high_order >> 24);
254 datum[57]=(
unsigned char) (high_order >> 16);
255 datum[58]=(
unsigned char) (high_order >> 8);
256 datum[59]=(
unsigned char) high_order;
257 datum[60]=(
unsigned char) (low_order >> 24);
258 datum[61]=(
unsigned char) (low_order >> 16);
259 datum[62]=(
unsigned char) (low_order >> 8);
260 datum[63]=(
unsigned char) low_order;
266 *q++=(
unsigned char) ((*p >> 24) & 0xff);
267 *q++=(
unsigned char) ((*p >> 16) & 0xff);
268 *q++=(
unsigned char) ((*p >> 8) & 0xff);
269 *q++=(
unsigned char) (*p & 0xff);
333 return(signature_info->
digest);
500 assert(image != (
Image *) NULL);
508 for (y=0; y < (ssize_t) image->
rows; y++)
517 if (p == (
const Quantum *) NULL)
523 for (x=0; x < (ssize_t) image->
columns; x++)
544 for (j=(ssize_t)
sizeof(pixel)-1; j >= 0; j--)
545 *q++=(
unsigned char) ((
unsigned char *) &pixel)[j];
547 for (j=0; j < (ssize_t)
sizeof(pixel); j++)
548 *q++=(
unsigned char) ((
unsigned char *) &pixel)[j];
593 #define Ch(x,y,z) (((x) & (y)) ^ (~(x) & (z))) 594 #define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) 595 #define RotateRight(x,n) (Trunc32(((x) >> n) | ((x) << (32-n)))) 596 #define Sigma0(x) (RotateRight(x,7) ^ RotateRight(x,18) ^ Trunc32((x) >> 3)) 597 #define Sigma1(x) (RotateRight(x,17) ^ RotateRight(x,19) ^ Trunc32((x) >> 10)) 598 #define Suma0(x) (RotateRight(x,2) ^ RotateRight(x,13) ^ RotateRight(x,22)) 599 #define Suma1(x) (RotateRight(x,6) ^ RotateRight(x,11) ^ RotateRight(x,25)) 600 #define Trunc32(x) ((unsigned int) ((x) & 0xffffffffU)) 611 static const unsigned int 614 0x428a2f98U, 0x71374491U, 0xb5c0fbcfU, 0xe9b5dba5U, 0x3956c25bU,
615 0x59f111f1U, 0x923f82a4U, 0xab1c5ed5U, 0xd807aa98U, 0x12835b01U,
616 0x243185beU, 0x550c7dc3U, 0x72be5d74U, 0x80deb1feU, 0x9bdc06a7U,
617 0xc19bf174U, 0xe49b69c1U, 0xefbe4786U, 0x0fc19dc6U, 0x240ca1ccU,
618 0x2de92c6fU, 0x4a7484aaU, 0x5cb0a9dcU, 0x76f988daU, 0x983e5152U,
619 0xa831c66dU, 0xb00327c8U, 0xbf597fc7U, 0xc6e00bf3U, 0xd5a79147U,
620 0x06ca6351U, 0x14292967U, 0x27b70a85U, 0x2e1b2138U, 0x4d2c6dfcU,
621 0x53380d13U, 0x650a7354U, 0x766a0abbU, 0x81c2c92eU, 0x92722c85U,
622 0xa2bfe8a1U, 0xa81a664bU, 0xc24b8b70U, 0xc76c51a3U, 0xd192e819U,
623 0xd6990624U, 0xf40e3585U, 0x106aa070U, 0x19a4c116U, 0x1e376c08U,
624 0x2748774cU, 0x34b0bcb5U, 0x391c0cb3U, 0x4ed8aa4aU, 0x5b9cca4fU,
625 0x682e6ff3U, 0x748f82eeU, 0x78a5636fU, 0x84c87814U, 0x8cc70208U,
626 0x90befffaU, 0xa4506cebU, 0xbef9a3f7U, 0xc67178f2U
649 if (
sizeof(
unsigned int) <= 4)
651 for (i=0; i < 16; i++)
653 T=(*((
unsigned int *) p));
658 for (i=0; i < 16; i+=2)
660 T=(*((
unsigned int *) p));
668 if (
sizeof(
unsigned int) <= 4)
670 for (i=0; i < 16; i++)
672 T=(*((
unsigned int *) p));
674 W[i]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
675 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
678 for (i=0; i < 16; i+=2)
680 T=(*((
unsigned int *) p));
682 W[i]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
683 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
685 W[i+1]=((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) |
686 ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff);
699 for (i=16; i < 64; i++)
701 for (j=0; j < 64; j++)
739 (void) memset(W,0,
sizeof(W));
788 if (length < signature_info->low_order)
791 signature_info->
high_order+=(
unsigned int) n >> 29;
793 if (signature_info->
extent != 0)
799 signature_info->
extent,p,i);
802 signature_info->
extent+=i;
MagickExport CacheView * DestroyCacheView(CacheView *cache_view)
MagickPrivate void InitializeSignature(SignatureInfo *signature_info)
#define DisableMSCWarning(nr)
static void TransformSignature(SignatureInfo *)
#define ThrowFatalException(severity, tag)
static PixelTrait GetPixelChannelTraits(const Image *magick_restrict image, const PixelChannel channel)
static Quantum GetPixelReadMask(const Image *magick_restrict image, const Quantum *magick_restrict pixel)
MagickExport MagickBooleanType SignatureImage(Image *image, ExceptionInfo *exception)
MagickExport const Quantum * GetCacheViewVirtualPixels(const CacheView *cache_view, const ssize_t x, const ssize_t y, const size_t columns, const size_t rows, ExceptionInfo *exception)
#define SignatureBlocksize
unsigned int * accumulator
MagickPrivate SignatureInfo * AcquireSignatureInfo(void)
MagickPrivate void FinalizeSignature(SignatureInfo *signature_info)
#define MagickCoreSignature
#define SignatureDigestsize
MagickExport unsigned char * GetStringInfoDatum(const StringInfo *string_info)
MagickExport void * AcquireCriticalMemory(const size_t size)
MagickExport StringInfo * DestroyStringInfo(StringInfo *string_info)
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
MagickExport time_t GetMagickTime(void)
#define RestoreMSCWarning
MagickExport MagickBooleanType SetImageProperty(Image *image, const char *property, const char *value, ExceptionInfo *exception)
MagickPrivate unsigned int GetSignatureDigestsize(const SignatureInfo *signature_info)
MagickExport MagickBooleanType LogMagickEvent(const LogEventType type, const char *module, const char *function, const size_t line, const char *format,...)
MagickExport StringInfo * AcquireStringInfo(const size_t length)
static size_t GetPixelChannels(const Image *magick_restrict image)
MagickPrivate unsigned int GetSignatureBlocksize(const SignatureInfo *signature_info)
char filename[MagickPathExtent]
#define GetMagickModule()
MagickPrivate void UpdateSignature(SignatureInfo *signature_info, const StringInfo *message)
static PixelChannel GetPixelChannelChannel(const Image *magick_restrict image, const ssize_t offset)
MagickExport CacheView * AcquireVirtualCacheView(const Image *image, ExceptionInfo *exception)
MagickBooleanType lsb_first
MagickExport void SetStringInfoLength(StringInfo *string_info, const size_t length)
MagickExport char * DestroyString(char *string)
MagickExport MagickBooleanType DeleteImageProperty(Image *image, const char *property)
MagickPrivate const StringInfo * GetSignatureDigest(const SignatureInfo *signature_info)
MagickExport void * RelinquishMagickMemory(void *memory)
MagickPrivate void SetSignatureDigest(SignatureInfo *signature_info, const StringInfo *digest)
MagickExport char * StringInfoToHexString(const StringInfo *string_info)
MagickExport size_t GetStringInfoLength(const StringInfo *string_info)
MagickExport void SetStringInfoDatum(StringInfo *string_info, const unsigned char *source)
MagickExport void SetStringInfo(StringInfo *string_info, const StringInfo *source)
MagickPrivate SignatureInfo * DestroySignatureInfo(SignatureInfo *signature_info)