X-Git-Url: http://git.euphorik.ch/?p=crypto_lab2.git;a=blobdiff_plain;f=labo2-fsharp%2FCryptoFileTests%2FTests.fs;fp=labo2-fsharp%2FCryptoFileTests%2FTests.fs;h=458b1beeb1bde578d5d931034a399762d1ab0615;hp=eb8a2902805fe33956e32b1309f771c1a70028ec;hb=c0d86015957eda6badbe9c6e5256807f9ab0c02f;hpb=8e04e7140bd58f941930dc15b890236f8a20c67b diff --git a/labo2-fsharp/CryptoFileTests/Tests.fs b/labo2-fsharp/CryptoFileTests/Tests.fs index eb8a290..458b1be 100644 --- a/labo2-fsharp/CryptoFileTests/Tests.fs +++ b/labo2-fsharp/CryptoFileTests/Tests.fs @@ -5,7 +5,7 @@ open CryptoFile let doSomeTests () = printfn "===== Unit tests" - CryptoFile.UnitTests.runAllUnitTests () + UnitTests.runAllUnitTests () printfn "===== Unit tests OK" printfn "===== API tests" @@ -15,8 +15,8 @@ let doSomeTests () = File.WriteAllText (plainFilename, fileContent) - let keyCryptPub, keyCryptPriv = API.generatKeysPair - let keySigPub, keySigPriv = API.generatKeysPair + let keyCryptPub, keyCryptPriv = API.generatKeysPair () + let keySigPub, keySigPriv = API.generatKeysPair () let encrypt () = API.encryptFile plainFilename cipherFilename keySigPriv keyCryptPub @@ -25,11 +25,11 @@ let doSomeTests () = API.decryptFile cipherFilename "." keySigPub keyCryptPriv let incrementByteCipherFileAt position = - using (new FileStream (cipherFilename, FileMode.Open, FileAccess.ReadWrite)) - (fun fs -> fs.Position <- position - let byte = fs.ReadByte () |> byte - fs.Position <- position - fs.Write ([| byte + 1uy |], 0, 1)) // Automatically modulo 256. + use fs = new FileStream (cipherFilename, FileMode.Open, FileAccess.ReadWrite) + fs.Position <- position + let byte = fs.ReadByte () |> byte + fs.Position <- position + fs.Write ([| byte + 1uy |], 0, 1) // Modulo 256. encrypt () File.Delete plainFilename @@ -37,38 +37,48 @@ let doSomeTests () = assert (File.ReadAllText plainFilename = fileContent) printfn "== Altering the MAC..." - incrementByteCipherFileAt 0L - try - decrypt () - assert false - with - | error -> assert (error :? IntegrityError) + for i in 0 .. API.hmacSize - 1 do + printf "." + encrypt () + incrementByteCipherFileAt (int64 i) + try + decrypt () + assert false + with + | error -> assert (error :? IntegrityError) + printfn "" printfn "== Altering the signature..." - encrypt () - incrementByteCipherFileAt 32L - try - decrypt () - assert false - with - | error -> assert (error :? SignatureMismatch) + for i in 0 .. API.signatureSize - 1 do + printf "." + encrypt () + incrementByteCipherFileAt (int64 <| API.hmacSize + i) + try + decrypt () + assert false + with + | error -> assert (error :? SignatureMismatch) + printfn "" printfn "== Altering the keys..." - encrypt () - incrementByteCipherFileAt (32L + 256L) - try - decrypt () - assert false - with - | error -> assert (error :? UnableToDecryptAESKeys) + for i in 0 .. API.keysSize - 1 do + printf "." + encrypt () + incrementByteCipherFileAt (int64 <| API.hmacSize + API.signatureSize + i) + try + decrypt () + assert false + with + | error -> assert (error :? UnableToDecryptKeys) + printfn "" printfn "== Altering the cyphertext..." encrypt () - incrementByteCipherFileAt (32L + 256L + 256L) + incrementByteCipherFileAt (int64 <| API.hmacSize + API.signatureSize + API.keysSize) try decrypt () assert false - with + with | error -> assert (error :? IntegrityError) File.Delete cipherFilename