diff --git a/scripts/data_files/vs2010-app-template.vcxproj b/scripts/data_files/vs2010-app-template.vcxproj
index 7433cd393..9e2b47a50 100644
--- a/scripts/data_files/vs2010-app-template.vcxproj
+++ b/scripts/data_files/vs2010-app-template.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+
Win32Proj
diff --git a/scripts/update_vs_apps.pl b/scripts/update_vs_apps.pl
index 5f2f94412..76fc59f1d 100755
--- a/scripts/update_vs_apps.pl
+++ b/scripts/update_vs_apps.pl
@@ -8,6 +8,7 @@
use warnings;
use strict;
+use Digest::MD5 'md5_hex';
my $vs6_dir = "visualc/VS6";
my $vs6_ext = "dsp";
@@ -81,15 +82,26 @@ sub slurp_file {
return $content;
}
+sub gen_app_guid {
+ my ($path) = @_;
+
+ my $guid = md5_hex( "PolarSSL:$path" );
+ $guid =~ s/(.{8})(.{4})(.{4})(.{4})(.{12})/\U{$1-$2-$3-$4-$5}/;
+
+ return $guid;
+}
+
sub gen_app {
my ($path, $template, $dir, $ext) = @_;
+ my $guid = gen_app_guid( $path );
$path =~ s!/!\\!g;
(my $appname = $path) =~ s/.*\\//;
my $content = $template;
$content =~ s//$path/g;
$content =~ s//$appname/g;
+ $content =~ s//$guid/g;
open my $app_fh, '>', "$dir/$appname.$ext";
print $app_fh $content;
diff --git a/visualc/VS2010/aescrypt2.vcxproj b/visualc/VS2010/aescrypt2.vcxproj
index b6567e2cb..2e2727cae 100644
--- a/visualc/VS2010/aescrypt2.vcxproj
+++ b/visualc/VS2010/aescrypt2.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {46298485-CE22-B800-3D95-6D6C821819A1}
Win32Proj
aescrypt2
diff --git a/visualc/VS2010/benchmark.vcxproj b/visualc/VS2010/benchmark.vcxproj
index aa548d764..303f5ec5e 100644
--- a/visualc/VS2010/benchmark.vcxproj
+++ b/visualc/VS2010/benchmark.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {58A8E53D-21CB-5F27-5111-737EBD3F37A0}
Win32Proj
benchmark
diff --git a/visualc/VS2010/cert_app.vcxproj b/visualc/VS2010/cert_app.vcxproj
index d88a78df5..095ec0066 100644
--- a/visualc/VS2010/cert_app.vcxproj
+++ b/visualc/VS2010/cert_app.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {E3172E20-4935-69C7-A398-C13EAA76818F}
Win32Proj
cert_app
diff --git a/visualc/VS2010/cert_req.vcxproj b/visualc/VS2010/cert_req.vcxproj
index c493363dd..344aba864 100644
--- a/visualc/VS2010/cert_req.vcxproj
+++ b/visualc/VS2010/cert_req.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {5ABF68F6-5360-DE1F-74B6-66ED5BF52619}
Win32Proj
cert_req
diff --git a/visualc/VS2010/crl_app.vcxproj b/visualc/VS2010/crl_app.vcxproj
index d6e77d173..e0833feac 100644
--- a/visualc/VS2010/crl_app.vcxproj
+++ b/visualc/VS2010/crl_app.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {10F967D6-468F-3BCA-2D58-36A32E376930}
Win32Proj
crl_app
diff --git a/visualc/VS2010/crypt_and_hash.vcxproj b/visualc/VS2010/crypt_and_hash.vcxproj
index 666c2e4df..ebab22117 100644
--- a/visualc/VS2010/crypt_and_hash.vcxproj
+++ b/visualc/VS2010/crypt_and_hash.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {84F76F01-FA6C-7C48-1979-06FD24B476C1}
Win32Proj
crypt_and_hash
diff --git a/visualc/VS2010/dh_client.vcxproj b/visualc/VS2010/dh_client.vcxproj
index cb40ff415..e3aa94ae3 100644
--- a/visualc/VS2010/dh_client.vcxproj
+++ b/visualc/VS2010/dh_client.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {92253FCF-72E1-7AF6-EAD1-E9037A194C9F}
Win32Proj
dh_client
diff --git a/visualc/VS2010/dh_genprime.vcxproj b/visualc/VS2010/dh_genprime.vcxproj
index 9ea6aef7a..b052b3ac2 100644
--- a/visualc/VS2010/dh_genprime.vcxproj
+++ b/visualc/VS2010/dh_genprime.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {8972AF2C-6333-2827-F75D-3BAC5E07915A}
Win32Proj
dh_genprime
diff --git a/visualc/VS2010/dh_server.vcxproj b/visualc/VS2010/dh_server.vcxproj
index 48d78f777..44b0a4e9e 100644
--- a/visualc/VS2010/dh_server.vcxproj
+++ b/visualc/VS2010/dh_server.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {9BB33B8B-A1D3-ABEF-9071-D92289A4CEED}
Win32Proj
dh_server
diff --git a/visualc/VS2010/gen_entropy.vcxproj b/visualc/VS2010/gen_entropy.vcxproj
index e60d5e137..8bc529423 100644
--- a/visualc/VS2010/gen_entropy.vcxproj
+++ b/visualc/VS2010/gen_entropy.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {2E5B8634-26AC-5819-5AF7-16F996A7F529}
Win32Proj
gen_entropy
diff --git a/visualc/VS2010/gen_key.vcxproj b/visualc/VS2010/gen_key.vcxproj
index b3447b591..896e820fc 100644
--- a/visualc/VS2010/gen_key.vcxproj
+++ b/visualc/VS2010/gen_key.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {7721EBA2-C892-AD9B-4994-A0E988BA4BF8}
Win32Proj
gen_key
diff --git a/visualc/VS2010/gen_random_ctr_drbg.vcxproj b/visualc/VS2010/gen_random_ctr_drbg.vcxproj
index 2315ea624..0798aff53 100644
--- a/visualc/VS2010/gen_random_ctr_drbg.vcxproj
+++ b/visualc/VS2010/gen_random_ctr_drbg.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {C5DF2F0C-3EFC-E5D6-7FD2-AD599CADDB15}
Win32Proj
gen_random_ctr_drbg
diff --git a/visualc/VS2010/gen_random_havege.vcxproj b/visualc/VS2010/gen_random_havege.vcxproj
index e7b41edb0..58126def2 100644
--- a/visualc/VS2010/gen_random_havege.vcxproj
+++ b/visualc/VS2010/gen_random_havege.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {D93D1FF0-5E83-2247-31A0-017D20F8011F}
Win32Proj
gen_random_havege
diff --git a/visualc/VS2010/generic_sum.vcxproj b/visualc/VS2010/generic_sum.vcxproj
index 1a8a87bf1..441c9cbc1 100644
--- a/visualc/VS2010/generic_sum.vcxproj
+++ b/visualc/VS2010/generic_sum.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {7036A174-35D6-54AE-7613-A50F5FD8AF86}
Win32Proj
generic_sum
diff --git a/visualc/VS2010/hello.vcxproj b/visualc/VS2010/hello.vcxproj
index 786d0f4b9..83c055905 100644
--- a/visualc/VS2010/hello.vcxproj
+++ b/visualc/VS2010/hello.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {7076F38E-EDC4-1A0C-8D9B-CFB0A3E9724F}
Win32Proj
hello
diff --git a/visualc/VS2010/key_app.vcxproj b/visualc/VS2010/key_app.vcxproj
index b34e88ca2..d06157418 100644
--- a/visualc/VS2010/key_app.vcxproj
+++ b/visualc/VS2010/key_app.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {5129B724-3FB6-CE34-FF51-57031A33C50B}
Win32Proj
key_app
diff --git a/visualc/VS2010/key_app_writer.vcxproj b/visualc/VS2010/key_app_writer.vcxproj
index 1df379d01..a7c4e4fab 100644
--- a/visualc/VS2010/key_app_writer.vcxproj
+++ b/visualc/VS2010/key_app_writer.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {090B665D-0F4C-4D77-D1B1-A6D882842AA3}
Win32Proj
key_app_writer
diff --git a/visualc/VS2010/md5sum.vcxproj b/visualc/VS2010/md5sum.vcxproj
index 5ab7231b2..bb4ee8abe 100644
--- a/visualc/VS2010/md5sum.vcxproj
+++ b/visualc/VS2010/md5sum.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {D4F79297-4960-6D63-D50E-5823C50ED124}
Win32Proj
md5sum
diff --git a/visualc/VS2010/mpi_demo.vcxproj b/visualc/VS2010/mpi_demo.vcxproj
index b597b7b6a..9c225a611 100644
--- a/visualc/VS2010/mpi_demo.vcxproj
+++ b/visualc/VS2010/mpi_demo.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {08A79AF8-5B8A-4343-D01A-B8AB47F3366C}
Win32Proj
mpi_demo
diff --git a/visualc/VS2010/pem2der.vcxproj b/visualc/VS2010/pem2der.vcxproj
index 3c98f841a..be92d3f7b 100644
--- a/visualc/VS2010/pem2der.vcxproj
+++ b/visualc/VS2010/pem2der.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {ACFFE3C9-3628-9B99-E0C9-36CF95F86B5F}
Win32Proj
pem2der
diff --git a/visualc/VS2010/pk_decrypt.vcxproj b/visualc/VS2010/pk_decrypt.vcxproj
index 75fbec57f..d3df49be0 100644
--- a/visualc/VS2010/pk_decrypt.vcxproj
+++ b/visualc/VS2010/pk_decrypt.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {C69CD150-7174-FA91-9E6E-B7DDD56FDE8E}
Win32Proj
pk_decrypt
diff --git a/visualc/VS2010/pk_encrypt.vcxproj b/visualc/VS2010/pk_encrypt.vcxproj
index 78db6502b..4cd5e8946 100644
--- a/visualc/VS2010/pk_encrypt.vcxproj
+++ b/visualc/VS2010/pk_encrypt.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {239051A9-0CE6-7730-7BB0-83599DC37AA4}
Win32Proj
pk_encrypt
diff --git a/visualc/VS2010/pk_sign.vcxproj b/visualc/VS2010/pk_sign.vcxproj
index 185baa329..52501b71c 100644
--- a/visualc/VS2010/pk_sign.vcxproj
+++ b/visualc/VS2010/pk_sign.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {EBDBB632-13A2-45F8-A44E-4837F6467512}
Win32Proj
pk_sign
diff --git a/visualc/VS2010/pk_verify.vcxproj b/visualc/VS2010/pk_verify.vcxproj
index 6bb7f7670..00ed98f6b 100644
--- a/visualc/VS2010/pk_verify.vcxproj
+++ b/visualc/VS2010/pk_verify.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {CA8D1EDA-2881-55E0-8F1C-B379B5AA7B56}
Win32Proj
pk_verify
diff --git a/visualc/VS2010/rsa_decrypt.vcxproj b/visualc/VS2010/rsa_decrypt.vcxproj
index 7f967b5f6..d08083dda 100644
--- a/visualc/VS2010/rsa_decrypt.vcxproj
+++ b/visualc/VS2010/rsa_decrypt.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {7E3D99BD-3D9E-762A-E235-9C8275E7010F}
Win32Proj
rsa_decrypt
diff --git a/visualc/VS2010/rsa_encrypt.vcxproj b/visualc/VS2010/rsa_encrypt.vcxproj
index 1ae39ef82..8982628cb 100644
--- a/visualc/VS2010/rsa_encrypt.vcxproj
+++ b/visualc/VS2010/rsa_encrypt.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {DA85604D-9ED1-FD08-4F37-FBD33E5E3642}
Win32Proj
rsa_encrypt
diff --git a/visualc/VS2010/rsa_genkey.vcxproj b/visualc/VS2010/rsa_genkey.vcxproj
index c4cf7067f..e39d46dbd 100644
--- a/visualc/VS2010/rsa_genkey.vcxproj
+++ b/visualc/VS2010/rsa_genkey.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {AD5B2F84-44A2-8D21-D47D-07E0ED7E0AAD}
Win32Proj
rsa_genkey
diff --git a/visualc/VS2010/rsa_sign.vcxproj b/visualc/VS2010/rsa_sign.vcxproj
index 44d54f094..c506f6eff 100644
--- a/visualc/VS2010/rsa_sign.vcxproj
+++ b/visualc/VS2010/rsa_sign.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {CFC883CE-9BAE-B26F-B08B-7F194AD35929}
Win32Proj
rsa_sign
diff --git a/visualc/VS2010/rsa_sign_pss.vcxproj b/visualc/VS2010/rsa_sign_pss.vcxproj
index adfa6a753..0b74bbbb6 100644
--- a/visualc/VS2010/rsa_sign_pss.vcxproj
+++ b/visualc/VS2010/rsa_sign_pss.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {34A00BC1-32A6-5145-606F-F081D31CC1D1}
Win32Proj
rsa_sign_pss
diff --git a/visualc/VS2010/rsa_verify.vcxproj b/visualc/VS2010/rsa_verify.vcxproj
index 1b9597c17..8b8410c78 100644
--- a/visualc/VS2010/rsa_verify.vcxproj
+++ b/visualc/VS2010/rsa_verify.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {77834257-2878-A38D-AEBE-79423968B6DB}
Win32Proj
rsa_verify
diff --git a/visualc/VS2010/rsa_verify_pss.vcxproj b/visualc/VS2010/rsa_verify_pss.vcxproj
index 403f76a25..df54f61ec 100644
--- a/visualc/VS2010/rsa_verify_pss.vcxproj
+++ b/visualc/VS2010/rsa_verify_pss.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {DAD91B2F-DEC8-E94F-8D9A-66B6E237AF07}
Win32Proj
rsa_verify_pss
diff --git a/visualc/VS2010/selftest.vcxproj b/visualc/VS2010/selftest.vcxproj
index e5e50809f..8edf196a4 100644
--- a/visualc/VS2010/selftest.vcxproj
+++ b/visualc/VS2010/selftest.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {4DD758B5-6FC5-66C0-1D26-22C74C88FEF3}
Win32Proj
selftest
diff --git a/visualc/VS2010/sha1sum.vcxproj b/visualc/VS2010/sha1sum.vcxproj
index 1e3d264f1..e4b0cea81 100644
--- a/visualc/VS2010/sha1sum.vcxproj
+++ b/visualc/VS2010/sha1sum.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {A0278E64-D98F-842D-438A-6747411CE76F}
Win32Proj
sha1sum
diff --git a/visualc/VS2010/sha2sum.vcxproj b/visualc/VS2010/sha2sum.vcxproj
index abfb7f3ae..821050a75 100644
--- a/visualc/VS2010/sha2sum.vcxproj
+++ b/visualc/VS2010/sha2sum.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {BAF92F6C-E5BE-95B7-6E36-823A1779A818}
Win32Proj
sha2sum
diff --git a/visualc/VS2010/ssl_cert_test.vcxproj b/visualc/VS2010/ssl_cert_test.vcxproj
index 00412acef..e47ec9a25 100644
--- a/visualc/VS2010/ssl_cert_test.vcxproj
+++ b/visualc/VS2010/ssl_cert_test.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {173A0BC9-FF81-3C36-7887-4FBD6032C9FD}
Win32Proj
ssl_cert_test
diff --git a/visualc/VS2010/ssl_client1.vcxproj b/visualc/VS2010/ssl_client1.vcxproj
index d1e407137..bdcec8b40 100644
--- a/visualc/VS2010/ssl_client1.vcxproj
+++ b/visualc/VS2010/ssl_client1.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {CE90D346-EBC0-D292-6D68-24717DB3F510}
Win32Proj
ssl_client1
diff --git a/visualc/VS2010/ssl_client2.vcxproj b/visualc/VS2010/ssl_client2.vcxproj
index 88bec781d..62cd2bded 100644
--- a/visualc/VS2010/ssl_client2.vcxproj
+++ b/visualc/VS2010/ssl_client2.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {436AF1C2-99E7-32FA-5BFA-641F1FF2C57D}
Win32Proj
ssl_client2
diff --git a/visualc/VS2010/ssl_fork_server.vcxproj b/visualc/VS2010/ssl_fork_server.vcxproj
index dbaebd4ce..b0e55f0f4 100644
--- a/visualc/VS2010/ssl_fork_server.vcxproj
+++ b/visualc/VS2010/ssl_fork_server.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {D8295912-D341-F4E4-DC8E-98A2A0604221}
Win32Proj
ssl_fork_server
diff --git a/visualc/VS2010/ssl_mail_client.vcxproj b/visualc/VS2010/ssl_mail_client.vcxproj
index b2bb02f94..8ffc3adbe 100644
--- a/visualc/VS2010/ssl_mail_client.vcxproj
+++ b/visualc/VS2010/ssl_mail_client.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {68EFA4E3-08B0-2925-0EF6-177996B08B24}
Win32Proj
ssl_mail_client
diff --git a/visualc/VS2010/ssl_server.vcxproj b/visualc/VS2010/ssl_server.vcxproj
index 796ec38ac..d75f9f1d8 100644
--- a/visualc/VS2010/ssl_server.vcxproj
+++ b/visualc/VS2010/ssl_server.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {C49B1EF8-D169-70C5-2FA4-837A900267A7}
Win32Proj
ssl_server
diff --git a/visualc/VS2010/ssl_server2.vcxproj b/visualc/VS2010/ssl_server2.vcxproj
index a27050dc9..df0585ed8 100644
--- a/visualc/VS2010/ssl_server2.vcxproj
+++ b/visualc/VS2010/ssl_server2.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {870B39B9-8F38-D9A4-8A07-87047C565061}
Win32Proj
ssl_server2
diff --git a/visualc/VS2010/ssl_test.vcxproj b/visualc/VS2010/ssl_test.vcxproj
index af3051770..233275874 100644
--- a/visualc/VS2010/ssl_test.vcxproj
+++ b/visualc/VS2010/ssl_test.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {0FC4D326-CF64-AB19-B037-3E3D06EA6798}
Win32Proj
ssl_test
diff --git a/visualc/VS2010/strerror.vcxproj b/visualc/VS2010/strerror.vcxproj
index 99bb37bfb..03a4da16d 100644
--- a/visualc/VS2010/strerror.vcxproj
+++ b/visualc/VS2010/strerror.vcxproj
@@ -27,7 +27,7 @@
- {54880004-9AA2-434D-A2F0-7F59D6F1536A}
+ {9D625831-AF31-CFBA-8855-61C024DA2DE0}
Win32Proj
strerror