Changeset - 40f2dda94216
[Not reviewed]
default
0 2 0
Laman - 5 years ago 2019-07-07 11:47:59

error messages, limited number of PBKDF iterations
2 files changed with 9 insertions and 4 deletions:
0 comments (0 inline, 0 general)
dist/crypto.html
Show inline comments
 
@@ -38,8 +38,10 @@
 
		
 
		form.querySelector("button[name='decrypt']").addEventListener("click",function(){
 
			let res=cryptoJS.decrypt(input.value,password.value);
 
			if(res===1){res="! Nepodařilo se ověřit pravost zprávy. !";}
 
			else if(res===2){res="! Nekompatibilní verze programu. !";}
 
			if(res===1){res="! Neplatný podpis. Nepodařilo se ověřit pravost zprávy. !";}
 
			else if(res===2){res="! Neplatný formát zprávy. Nekompatibilní verze programu. !";}
 
			else if(res===3){res="! Neplatný formát zprávy. Počet iterací mimo povolený rozsah. !";}
 
			else if(res===4){res="! Neplatný formát zprávy. Příliš krátká zpráva. !";}
 
			output.value=res;
 
		});
 
	</script>
src/main.js
Show inline comments
 
@@ -4,6 +4,7 @@ import {pbkdf2} from "./pbkdf2.js";
 
import {Chacha20,encrypt as _encrypt,decrypt as _decrypt} from "./chacha.js";
 

	
 
const VERSION=1;
 
const MAX_ITERS=24;
 

	
 
function encrypt(s,password){
 
	let bs=util.str2utf8(s);
 
@@ -25,10 +26,12 @@ function decrypt(s,password){
 
	let salt=arr.slice(18,30);
 
	let ciphertext=arr.slice(30);
 
	
 
	if(ciphertext.length==0){return 4;}
 
	if(version>VERSION){return 2;}
 
	if(iters>MAX_ITERS){return 3;}
 
	let key=pbkdf2(pass,salt,1<<iters,32);
 
	let check=blake2s([version,iters].concat(salt,ciphertext),16,key);
 
	if(!signature.every((b,i)=>b===check[i])){return 1;}
 
	if(version>VERSION){return 2;}
 
	let plainbytes=_decrypt(ciphertext,key,salt);
 
	return util.utf82str(plainbytes);
 
}
 
@@ -36,7 +39,7 @@ function decrypt(s,password){
 
function stretchKey(password,salt){
 
	let start=Date.now(); // ms
 
	let i,key;
 
	for(i=0;i<52;i++){
 
	for(i=0;i<=MAX_ITERS;i++){
 
		key=pbkdf2(password,salt,1<<i,32);
 
		if(Date.now()-start>=500){break;}
 
	}
0 comments (0 inline, 0 general)