foxygit / doom Log in
commit f7ecbd1449871a448daa7b96ce121f3fe9d19aed
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Sun Oct 28 10:40:37 2012 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Sun Oct 28 10:40:37 2012 +0000

    Define PRNG seed as a type.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 2534
---
 src/Makefile.am | 1 +
 src/aes_prng.c  | 5 +++--
 src/aes_prng.h  | 6 +++++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 03942157..25766ca0 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -132,6 +132,7 @@ deh_weapon.c
 # source files needed for FEATURE_MULTIPLAYER

 FEATURE_MULTIPLAYER_SOURCE_FILES=          \
+aes_prng.c           aes_prng.h            \
 net_client.c         net_client.h          \
 net_common.c         net_common.h          \
 net_dedicated.c      net_dedicated.h       \
diff --git a/src/aes_prng.c b/src/aes_prng.c
index 0a68efb5..f6ded3c1 100644
--- a/src/aes_prng.c
+++ b/src/aes_prng.c
@@ -70,6 +70,7 @@
 #include <stdlib.h>
 #include <string.h> /* for memcmp() */

+#include "aes_prng.h"
 #include "doomtype.h"
 #include "i_system.h"

@@ -948,7 +949,7 @@ static unsigned int prng_value_index = 0;

 // Initialize Pseudo-RNG using the specified 128-bit key.

-void PRNG_Start(byte *key)
+void PRNG_Start(prng_seed_t key)
 {
     char *errormsg;

@@ -959,7 +960,7 @@ void PRNG_Start(byte *key)
         I_Error("Failed to initialize PRNG: %s", errormsg);
     }

-    AES_SetKey(&prng_context, key, 128 / 8);
+    AES_SetKey(&prng_context, key, sizeof(prng_seed_t));
     prng_value_index = 4;
     prng_input_counter = 0;
     prng_enabled = true;
diff --git a/src/aes_prng.h b/src/aes_prng.h
index c58166b8..4c06f3a3 100644
--- a/src/aes_prng.h
+++ b/src/aes_prng.h
@@ -28,7 +28,11 @@

 #include "doomtype.h"

-void PRNG_Start(byte *key);
+// Nonce value used as random seed for secure demos.
+
+typedef byte prng_seed_t[16];
+
+void PRNG_Start(prng_seed_t seed);
 void PRNG_Stop(void);
 unsigned int PRNG_Random(void);