Lines Matching refs:stream
43 void deSha1Stream_init (deSha1Stream* stream)
45 stream->size = 0;
48 deMemset(stream->data, 0, 16 * sizeof(deUint32));
50 stream->hash[0] = 0x67452301u;
51 stream->hash[1] = 0xEFCDAB89u;
52 stream->hash[2] = 0x98BADCFEu;
53 stream->hash[3] = 0x10325476u;
54 stream->hash[4] = 0xC3D2E1F0u;
57 static void deSha1Stream_flushChunk (deSha1Stream* stream)
59 DE_ASSERT(stream->size % CHUNK_BYTE_SIZE == 0 && stream->size > 0);
65 for (ndx = 16; ndx < DE_LENGTH_OF_ARRAY(stream->data); ndx++)
67 stream->data[ndx] = leftRotate(stream->data[ndx - 3]
68 ^ stream->data[ndx - 8]
69 ^ stream->data[ndx - 14]
70 ^ stream->data[ndx - 16], 1);
75 deUint32 a = stream->hash[0];
76 deUint32 b = stream->hash[1];
77 deUint32 c = stream->hash[2];
78 deUint32 d = stream->hash[3];
79 deUint32 e = stream->hash[4];
82 for (ndx = 0; ndx < DE_LENGTH_OF_ARRAY(stream->data); ndx++)
109 const deUint32 tmp = leftRotate(a, 5) + f + e + k + stream->data[ndx];
119 stream->hash[0] += a;
120 stream->hash[1] += b;
121 stream->hash[2] += c;
122 stream->hash[3] += d;
123 stream->hash[4] += e;
126 deMemset(stream->data, 0, 16 * sizeof(deUint32));
130 void deSha1Stream_process (deSha1Stream* stream, size_t size, const void* data_)
139 const size_t bitOffset = (size_t)(8 * (4 - (1 + (stream->size % 4))));
141 stream->data[(stream->size / 4) % 16] |= ((deUint32)data[bytesProcessed]) << (deUint32)bitOffset;
143 stream->size++;
146 while (stream->size % CHUNK_BYTE_SIZE != 0 && bytesProcessed < size);
148 if (stream->size % CHUNK_BYTE_SIZE == 0)
149 deSha1Stream_flushChunk(stream);
155 void deSha1Stream_finalize (deSha1Stream* stream, deSha1* hash)
159 const deUint64 length = stream->size * 8;
170 const deUint64 spaceLeftInChunk = CHUNK_BYTE_SIZE - (stream->size % CHUNK_BYTE_SIZE);
172 /* The stream must be a multiple of 512 bits (CHUNK_BYTE_SIZE) and is terminated by a single bit set to 1,
178 deSha1Stream_process(stream, (size_t)(spaceLeftInChunk - sizeof(lengthData)), padding);
184 deSha1Stream_process(stream, (size_t)(spaceLeftInChunk), padding);
185 deSha1Stream_process(stream, (size_t)(CHUNK_BYTE_SIZE - sizeof(lengthData)), padding + spaceLeftInChunk);
189 deSha1Stream_process(stream, sizeof(lengthData), lengthData);
190 DE_ASSERT(stream->size % CHUNK_BYTE_SIZE == 0);
192 deMemcpy(hash->hash, stream->hash, sizeof(hash->hash));
197 deSha1Stream stream;
199 deSha1Stream_init(&stream);
200 deSha1Stream_process(&stream, size, data);
201 deSha1Stream_finalize(&stream, hash);
400 /* Test hash stream against few pre-computed cases. */
409 deSha1Stream stream;
413 deSha1Stream_init(&stream);
415 deSha1Stream_process(&stream, size/2, data);
416 deSha1Stream_process(&stream, size - (size/2), data + size/2);
418 deSha1Stream_finalize(&stream, &result);