chiark / gitweb /
more appropriate data types for rc4 implementation
authorRichard Kettlewell <rjk@greenend.org.uk>
Sat, 24 May 2014 13:59:48 +0000 (14:59 +0100)
committerRichard Kettlewell <rjk@greenend.org.uk>
Sat, 24 May 2014 13:59:48 +0000 (14:59 +0100)
Arcfour.cc
Arcfour.h
vbig.cc

index 49c8590495d282cd88f4be7b47f094996ff544a1..bc8b35670b4eda7abd5cdae27e9017c12bf250e0 100644 (file)
@@ -21,7 +21,7 @@
 #include <config.h>
 #include "Arcfour.h"
 
-void Arcfour::stream(char *outbuf, size_t length) {
+void Arcfour::stream(uint8_t *outbuf, size_t length) {
   uint8_t i = idx_i;
   uint8_t j = idx_j;
   
@@ -40,7 +40,7 @@ void Arcfour::stream(char *outbuf, size_t length) {
   idx_j = j;
 }
 
-Arcfour::Arcfour(const char *key, size_t keylen) {
+Arcfour::Arcfour(const uint8_t *key, size_t keylen) {
   size_t i, j, k;
   idx_i = idx_j = 0;
   for (i = 0; i < ARCFOUR_SBOX_SIZE; i++)
index 7d7abf018c0054652be525dc64531643679d4e94..1ccf047fd7cc1d9554120e63c1e0795b909d12c2 100644 (file)
--- a/Arcfour.h
+++ b/Arcfour.h
 #define ARCFOUR_SBOX_SIZE 256
 
 class Arcfour {
-  char sbox[ARCFOUR_SBOX_SIZE];
+  uint8_t sbox[ARCFOUR_SBOX_SIZE];
   uint8_t idx_i, idx_j;
 public:
-  Arcfour(const char *key, size_t keylen);
-  void stream(char *outbuf, size_t length);
+  Arcfour(const uint8_t *key, size_t keylen);
+  void stream(uint8_t *outbuf, size_t length);
 };
 
 #endif /* ARCFOUR_H */
diff --git a/vbig.cc b/vbig.cc
index 2a94519c590db01ed9ef1c84367bb829cc1ab7c2..7deee84581485494eda29475b69c062e646e7f25 100644 (file)
--- a/vbig.cc
+++ b/vbig.cc
@@ -278,7 +278,7 @@ static void showprogress(long long amount, const char *show) {
 
 // write/verify the target file
 static long long execute(mode_type mode, bool entire, const char *show) {
-  Arcfour rng((const char*)seed, seedlen);
+  Arcfour rng((const uint8_t *)seed, seedlen);
   FILE *fp = fopen(path, mode == VERIFY ? "rb" : "wb");
   if(!fp)
     fatal(errno, "%s", path);
@@ -286,7 +286,7 @@ static long long execute(mode_type mode, bool entire, const char *show) {
     flushCache(fp);
   if(mode == CREATE && entire)
     setvbuf(fp, 0, _IONBF, 0);
-  char generated[4096], input[4096];
+  uint8_t generated[4096], input[4096];
   long long remain = size;
   static const size_t rc4drop = 3072; // en.wikipedia.org/wiki/RC4#Security
   assert(rc4drop <= sizeof(generated));