1diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/config.hw srtp/config.hw
2--- srtp-pristine/config.hw	2007-05-23 13:40:21.000000000 -0400
3+++ srtp/config.hw	2009-04-22 17:58:01.000000000 -0400
4@@ -1,7 +1,7 @@
5 /* crypto/include/config.h.  Generated by configure.  */
6 /* config_in.h.  Generated from configure.in by autoheader.  */
7
8-#ifdef (_MSC_VER >= 1400)
9+#if (_MSC_VER >= 1400)
10 # define HAVE_RAND_S	1
11 #endif
12
13diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/crypto/cipher/aes_icm.c srtp/crypto/cipher/aes_icm.c
14--- srtp-pristine/crypto/cipher/aes_icm.c	2006-07-18 15:45:46.000000000 -0400
15+++ srtp/crypto/cipher/aes_icm.c	2009-04-22 17:58:01.000000000 -0400
16@@ -210,7 +210,7 @@ aes_icm_set_octet(aes_icm_ctx_t *c,
17 							  ((high32(octet_num) & 0x0f)<<(32-4)) |
18 							   (low32(octet_num) >> 4));
19 #else
20-  int tail_num       = octet_num % 16;
21+  int tail_num       = (int)(octet_num % 16);
22   uint64_t block_num = octet_num / 16;
23 #endif
24
25diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/install-win.bat srtp/install-win.bat
26--- srtp-pristine/install-win.bat	1969-12-31 19:00:00.000000000 -0500
27+++ srtp/install-win.bat	2009-04-22 17:58:01.000000000 -0400
28@@ -0,0 +1,31 @@
29+:: Installs from srtp windows build directory to directory specified on
30+:: command line
31+
32+
33+@if "%1"=="" (
34+	echo "Usage: %~nx0 destdir"
35+	exit /b 1
36+) else (
37+	set destdir=%1
38+)
39+
40+@if not exist %destdir% (
41+   echo %destdir% not found
42+   exit /b 1
43+)
44+
45+@for %%d in (include\srtp.h crypto\include\crypto.h Debug\srtp.lib Release\srtp.lib) do (
46+	if not exist "%%d" (
47+	   echo "%%d not found: are you in the right directory?"
48+	   exit /b 1
49+	)
50+)
51+
52+mkdir %destdir%\include
53+mkdir %destdir%\include\srtp
54+mkdir %destdir%\lib
55+
56+copy include\*.h %destdir%\include\srtp
57+copy crypto\include\*.h %destdir%\include\srtp
58+copy Release\srtp.lib %destdir%\lib\srtp.lib
59+copy Debug\srtp.lib %destdir%\lib\srtpd.lib
60diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/srtp/ekt.c srtp/srtp/ekt.c
61--- srtp-pristine/srtp/ekt.c	2007-06-15 14:36:09.000000000 -0400
62+++ srtp/srtp/ekt.c	2009-04-22 18:47:06.000000000 -0400
63@@ -91,27 +91,27 @@ ekt_octets_after_base_tag(ekt_stream_t e
64 }
65
66 inline ekt_spi_t
67-srtcp_packet_get_ekt_spi(const void *packet_start, unsigned pkt_octet_len) {
68-  void *spi_location;
69+srtcp_packet_get_ekt_spi(const uint8_t *packet_start, unsigned pkt_octet_len) {
70+  const uint8_t *spi_location;
71
72   spi_location = packet_start + (pkt_octet_len - EKT_SPI_LEN);
73
74-  return *((ekt_spi_t *)spi_location);
75+  return *((const ekt_spi_t *)spi_location);
76 }
77
78 inline uint32_t
79-srtcp_packet_get_ekt_roc(const void *packet_start, unsigned pkt_octet_len) {
80-  void *roc_location;
81+srtcp_packet_get_ekt_roc(const uint8_t *packet_start, unsigned pkt_octet_len) {
82+  const uint8_t *roc_location;
83
84   roc_location = packet_start + (pkt_octet_len - EKT_OCTETS_AFTER_ROC);
85
86-  return *((uint32_t *)roc_location);
87+  return *((const uint32_t *)roc_location);
88 }
89
90-inline void *
91-srtcp_packet_get_emk_location(const void *packet_start,
92+inline const uint8_t *
93+srtcp_packet_get_emk_location(const uint8_t *packet_start,
94 			      unsigned pkt_octet_len) {
95-  void *location;
96+  const uint8_t *location;
97
98   location = packet_start + (pkt_octet_len - EKT_OCTETS_AFTER_BASE_TAG);
99
100@@ -161,7 +161,7 @@ srtp_stream_init_from_ekt(srtp_stream_t
101 			  const void *srtcp_hdr,
102 			  unsigned pkt_octet_len) {
103   err_status_t err;
104-  uint8_t *master_key;
105+  const uint8_t *master_key;
106   srtp_policy_t srtp_policy;
107   unsigned master_key_len;
108   uint32_t roc;
109@@ -179,7 +179,7 @@ srtp_stream_init_from_ekt(srtp_stream_t
110
111   /* decrypt the Encrypted Master Key field */
112   master_key = srtcp_packet_get_emk_location(srtcp_hdr, pkt_octet_len);
113-  aes_decrypt_with_raw_key(master_key, stream->ekt->data->ekt_dec_key);
114+  aes_decrypt_with_raw_key((void*)master_key, stream->ekt->data->ekt_dec_key);
115
116   /* set the SRTP ROC */
117   roc = srtcp_packet_get_ekt_roc(srtcp_hdr, pkt_octet_len);
118@@ -201,7 +201,7 @@ ekt_write_data(ekt_stream_t ekt,
119   uint32_t roc;
120   uint16_t isn;
121   unsigned emk_len;
122-  void *packet;
123+  uint8_t *packet;
124
125   /* if the pointer ekt is NULL, then EKT is not in effect */
126   if (!ekt) {
127@@ -211,7 +211,7 @@ ekt_write_data(ekt_stream_t ekt,
128
129   /* write zeros into the location of the base tag */
130   octet_string_set_to_zero(base_tag, base_tag_len);
131-  packet = base_tag + base_tag_len;
132+  packet = (uint8_t*)base_tag + base_tag_len;
133
134   /* copy encrypted master key into packet */
135   emk_len = ekt_octets_after_base_tag(ekt);
136@@ -221,14 +221,14 @@ ekt_write_data(ekt_stream_t ekt,
137   packet += emk_len;
138
139   /* copy ROC into packet */
140-  roc = pkt_index >> 16;
141+  roc = (uint32_t)(pkt_index >> 16);
142   *((uint32_t *)packet) = be32_to_cpu(roc);
143   debug_print(mod_srtp, "writing EKT ROC: %s,",
144 	      octet_string_hex_string(packet, sizeof(roc)));
145   packet += sizeof(roc);
146
147   /* copy ISN into packet */
148-  isn = pkt_index;
149+  isn = (uint16_t)pkt_index;
150   *((uint16_t *)packet) = htons(isn);
151   debug_print(mod_srtp, "writing EKT ISN: %s,",
152 	      octet_string_hex_string(packet, sizeof(isn)));
153diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/srtp.def srtp/srtp.def
154--- srtp-pristine/srtp.def	2006-05-22 16:46:21.000000000 -0400
155+++ srtp/srtp.def	2009-04-22 17:58:01.000000000 -0400
156@@ -89,4 +89,3 @@ aes_icm_encrypt_ismacryp
157 aes_icm_alloc_ismacryp
158 crypto_alloc
159 crypto_free
160-\ No newline at end of file
161\ No newline at end of file
162diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/srtp.sln srtp/srtp.sln
163--- srtp-pristine/srtp.sln	1969-12-31 19:00:00.000000000 -0500
164+++ srtp/srtp.sln	2009-04-22 17:58:01.000000000 -0400
165@@ -0,0 +1,26 @@
166+
167+Microsoft Visual Studio Solution File, Format Version 9.00
168+# Visual C++ Express 2005
169+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "srtp", "srtp.vcproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}"
170+EndProject
171+Global
172+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
173+		Debug Dll|Win32 = Debug Dll|Win32
174+		Debug|Win32 = Debug|Win32
175+		Release Dll|Win32 = Release Dll|Win32
176+		Release|Win32 = Release|Win32
177+	EndGlobalSection
178+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
179+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Dll|Win32.ActiveCfg = Debug Dll|Win32
180+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug Dll|Win32.Build.0 = Debug Dll|Win32
181+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.ActiveCfg = Debug|Win32
182+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Debug|Win32.Build.0 = Debug|Win32
183+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Dll|Win32.ActiveCfg = Release Dll|Win32
184+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release Dll|Win32.Build.0 = Release Dll|Win32
185+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.ActiveCfg = Release|Win32
186+		{EEF031CB-FED8-451E-A471-91EC8D4F6750}.Release|Win32.Build.0 = Release|Win32
187+	EndGlobalSection
188+	GlobalSection(SolutionProperties) = preSolution
189+		HideSolutionNode = FALSE
190+	EndGlobalSection
191+EndGlobal
192diff -purN -x CVS -x '*~' -x '.*' -x 'obj-*' srtp-pristine/srtp.vcproj srtp/srtp.vcproj
193--- srtp-pristine/srtp.vcproj	2006-05-22 16:46:21.000000000 -0400
194+++ srtp/srtp.vcproj	2009-04-22 17:58:01.000000000 -0400
195@@ -49,7 +49,7 @@
196 				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H"
197 				MinimalRebuild="true"
198 				BasicRuntimeChecks="3"
199-				RuntimeLibrary="3"
200+				RuntimeLibrary="1"
201 				StructMemberAlignment="0"
202 				UsePrecompiledHeader="0"
203 				WarningLevel="3"
204@@ -116,7 +116,7 @@
205 				Name="VCCLCompilerTool"
206 				AdditionalIncludeDirectories="crypto/include;include"
207 				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H"
208-				RuntimeLibrary="2"
209+				RuntimeLibrary="0"
210 				StructMemberAlignment="0"
211 				UsePrecompiledHeader="0"
212 				WarningLevel="3"
213@@ -324,6 +324,10 @@
214 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
215 			>
216 			<File
217+				RelativePath=".\srtp\ekt.c"
218+				>
219+			</File>
220+			<File
221 				RelativePath=".\srtp\srtp.c"
222 				>
223 			</File>
224@@ -484,10 +488,6 @@
225 				>
226 			</File>
227 			<File
228-				RelativePath=".\crypto\include\crypto_math.h"
229-				>
230-			</File>
231-			<File
232 				RelativePath=".\crypto\include\crypto_types.h"
233 				>
234 			</File>
235@@ -500,6 +500,10 @@
236 				>
237 			</File>
238 			<File
239+				RelativePath=".\include\ekt.h"
240+				>
241+			</File>
242+			<File
243 				RelativePath=".\crypto\include\err.h"
244 				>
245 			</File>
246@@ -516,10 +520,6 @@
247 				>
248 			</File>
249 			<File
250-				RelativePath=".\crypto\include\kernel_compat.h"
251-				>
252-			</File>
253-			<File
254 				RelativePath=".\crypto\include\key.h"
255 				>
256 			</File>
257@@ -548,10 +548,6 @@
258 				>
259 			</File>
260 			<File
261-				RelativePath=".\include\rtp.h"
262-				>
263-			</File>
264-			<File
265 				RelativePath=".\crypto\include\sha1.h"
266 				>
267 			</File>
268@@ -560,15 +556,15 @@
269 				>
270 			</File>
271 			<File
272-				RelativePath=".\crypto\include\stat.h"
273+				RelativePath=".\include\srtp_priv.h"
274 				>
275 			</File>
276 			<File
277-				RelativePath=".\include\ut_sim.h"
278+				RelativePath=".\crypto\include\stat.h"
279 				>
280 			</File>
281 			<File
282-				RelativePath=".\crypto\include\xfm.h"
283+				RelativePath=".\include\ut_sim.h"
284 				>
285 			</File>
286 		</Filter>
287@@ -579,6 +575,10 @@
288 			>
289 		</Filter>
290 		<File
291+			RelativePath=".\config.hw"
292+			>
293+		</File>
294+		<File
295 			RelativePath=".\srtp.def"
296 			>
297 		</File>
298