Clean up.
[crypto_lab2.git] / labo2-fsharp / CryptoFileTests / Tests.fs
index dd1b3e0..95ede04 100644 (file)
@@ -24,10 +24,12 @@ let doSomeTests () =
     let decrypt () = 
         API.decryptFile cipherFilename "." keySigPub keyCryptPriv
 
-    let writeByteToCipherFileAt byte position = 
-        using (new FileStream (cipherFilename, FileMode.Open, FileAccess.Write))
+    let incrementByteCipherFileAt position = 
+        using (new FileStream (cipherFilename, FileMode.Open, FileAccess.ReadWrite))
               (fun fs -> fs.Position <- position
-                         fs.Write ([| byte |], 0, 1))
+                         let byte = fs.ReadByte () |> byte
+                         fs.Position <- position
+                         fs.Write ([| byte + 1uy |], 0, 1)) // Automatically modulo 256.
 
     encrypt ()
     File.Delete plainFilename
@@ -35,7 +37,7 @@ let doSomeTests () =
     assert (File.ReadAllText plainFilename = fileContent)
 
     printfn "== Altering the MAC..."
-    writeByteToCipherFileAt 0uy 0L
+    incrementByteCipherFileAt 0L
     try
         decrypt ()
         assert false
@@ -44,7 +46,7 @@ let doSomeTests () =
 
     printfn "== Altering the signature..."
     encrypt ()
-    writeByteToCipherFileAt 0uy 32L
+    incrementByteCipherFileAt 32L
     try
         decrypt ()
         assert false
@@ -53,7 +55,7 @@ let doSomeTests () =
 
     printfn "== Altering the keys..."
     encrypt ()
-    writeByteToCipherFileAt 0uy (32L + 256L)
+    incrementByteCipherFileAt (32L + 256L)
     try
         decrypt ()
         assert false
@@ -62,7 +64,7 @@ let doSomeTests () =
 
     printfn "== Altering the cyphering..."
     encrypt ()
-    writeByteToCipherFileAt 0uy (32L + 256L + 256L)
+    incrementByteCipherFileAt (32L + 256L + 256L)
     try
         decrypt ()
         assert false