}
// MZ - DOS header
- if (BitConverter.ToUInt16 (file, 0) != 0x5A4D)
+ if (BitConverterLE.ToUInt16 (file, 0) != 0x5A4D)
return false;
// find offset of PE header
- int peOffset = BitConverter.ToInt32 (file, 60);
+ int peOffset = BitConverterLE.ToInt32 (file, 60);
if (peOffset > file.Length)
return false;
// PE - NT header
- if (BitConverter.ToUInt16 (file, peOffset) != 0x4550)
+ if (BitConverterLE.ToUInt16 (file, peOffset) != 0x4550)
return false;
// IMAGE_DIRECTORY_ENTRY_SECURITY
- int dirSecurityOffset = BitConverter.ToInt32 (file, peOffset + 152);
- int dirSecuritySize = BitConverter.ToInt32 (file, peOffset + 156);
+ int dirSecurityOffset = BitConverterLE.ToInt32 (file, peOffset + 152);
+ int dirSecuritySize = BitConverterLE.ToInt32 (file, peOffset + 156);
if (dirSecuritySize > 8) {
entry = new byte [dirSecuritySize - 8];
authenticode = sign.ASN1;
byte[] asn = authenticode.GetBytes ();
- // debug
- if (Environment.GetEnvironmentVariable ("MONO_DEBUG") != null) {
- using (FileStream fs = File.Open (fileName + ".sig", FileMode.Create, FileAccess.Write)) {
- fs.Write (asn, 0, asn.Length);
- fs.Close ();
- }
+#if DEBUG
+ using (FileStream fs = File.Open (fileName + ".sig", FileMode.Create, FileAccess.Write)) {
+ fs.Write (asn, 0, asn.Length);
+ fs.Close ();
}
-
+#endif
+ // someday I may be sure enough to move this into DEBUG ;-)
File.Copy (fileName, fileName + ".bak", true);
using (FileStream fs = File.Open (fileName, FileMode.Create, FileAccess.Write)) {\r
int filesize = (dirSecurityOffset == 0) ? file.Length : dirSecurityOffset;\r
// IMAGE_DIRECTORY_ENTRY_SECURITY (offset, size)\r
- byte[] data = BitConverter.GetBytes (filesize);\r
+ byte[] data = BitConverterLE.GetBytes (filesize);\r
file [peOffset + 152] = data [0];
file [peOffset + 153] = data [1];
file [peOffset + 154] = data [2];
if (addsize > 0)
addsize = 8 - addsize;
size += addsize;
- data = BitConverter.GetBytes (size); // header
+ data = BitConverterLE.GetBytes (size); // header
file [peOffset + 156] = data [0];
file [peOffset + 157] = data [1];
file [peOffset + 158] = data [2];
file [peOffset + 159] = data [3];\r
fs.Write (file, 0, filesize);\r
fs.Write (data, 0, data.Length); // length (again)
- data = BitConverter.GetBytes (0x00020200); // magic
+ data = BitConverterLE.GetBytes (0x00020200); // magic
fs.Write (data, 0, data.Length);
fs.Write (asn, 0, asn.Length);
// fill up
+2004-11-05 Sebastien Pouliot <sebastien@ximian.com>
+
+ * AuthenticodeFormatter.cs: Now use BitConverterLE for explicit
+ little-endian convertion.
+ * PrivateKey.cs: Now use BitConverterLE for explicit little-endian
+ convertion for PVK files.
+
2004-10-29 Sebastien Pouliot <sebastien@ximian.com>
* AuthenticodeFormatter.cs: Fixed spcSpOpusInfo attribute (it wasn't
private bool Decode (byte[] pvk, string password)
{
// DWORD magic
- if (BitConverter.ToUInt32 (pvk, 0) != magic)
+ if (BitConverterLE.ToUInt32 (pvk, 0) != magic)
return false;
// DWORD reserved
- if (BitConverter.ToUInt32 (pvk, 4) != 0x0)
+ if (BitConverterLE.ToUInt32 (pvk, 4) != 0x0)
return false;
// DWORD keytype
- keyType = BitConverter.ToInt32 (pvk, 8);
+ keyType = BitConverterLE.ToInt32 (pvk, 8);
// DWORD encrypted
- encrypted = (BitConverter.ToUInt32 (pvk, 12) == 1);
+ encrypted = (BitConverterLE.ToUInt32 (pvk, 12) == 1);
// DWORD saltlen
- int saltlen = BitConverter.ToInt32 (pvk, 16);
+ int saltlen = BitConverterLE.ToInt32 (pvk, 16);
// DWORD keylen
- int keylen = BitConverter.ToInt32 (pvk, 20);
+ int keylen = BitConverterLE.ToInt32 (pvk, 20);
byte[] keypair = new byte [keylen];
Buffer.BlockCopy (pvk, 24 + saltlen, keypair, 0, keylen);
// read salt (if present)
try {
// header
byte[] empty = new byte [4];
- byte[] data = BitConverter.GetBytes (magic);
+ byte[] data = BitConverterLE.GetBytes (magic);
fs.Write (data, 0, 4); // magic
fs.Write (empty, 0, 4); // reserved
- data = BitConverter.GetBytes (keyType);
+ data = BitConverterLE.GetBytes (keyType);
fs.Write (data, 0, 4); // key type
encrypted = (password != null);
blob = CryptoConvert.ToCapiPrivateKeyBlob (rsa);
if (encrypted) {
- data = BitConverter.GetBytes (1);
+ data = BitConverterLE.GetBytes (1);
fs.Write (data, 0, 4); // encrypted
- data = BitConverter.GetBytes (16);
+ data = BitConverterLE.GetBytes (16);
fs.Write (data, 0, 4); // saltlen
- data = BitConverter.GetBytes (blob.Length);
+ data = BitConverterLE.GetBytes (blob.Length);
fs.Write (data, 0, 4); // keylen
byte[] salt = new byte [16];
else {
fs.Write (empty, 0, 4); // encrypted
fs.Write (empty, 0, 4); // saltlen
- data = BitConverter.GetBytes (blob.Length);
+ data = BitConverterLE.GetBytes (blob.Length);
fs.Write (data, 0, 4); // keylen
}