/*
	amper5and / secrets.js
		https://github.com/amper5and/secrets.js/

	sssキーの生成
	使い方
			node sssEncode [share threshold] 秘密情報
*/
var fs = require('fs');
var secrets = require('./secrets');

var argv = process.argv.map(function (val) {
	return val;
});

if(argv.length<3){
	console.log("秘密情報の入力がありません。");
	return;
}

var sh=5;//シェア数
var th=3;//閾値
var pw="";//秘密情報
if(argv.length==3){
	pw=argv[2];
}
else if(argv.length==5){
	sh=parseInt(argv[2]);
	th=parseInt(argv[3]);
	pw=argv[4];
}
console.log("share="+sh+"\nthreshold="+th+"\n"+pw);

//秘密情報をhex stringに変換
var pwHex = secrets.str2hex(pw);
console.log(pwHex);

//sssによる分散情報の作成
var shares = secrets.share(pwHex, sh, th);

//分散情報のファイル書き込み
for(var i=0;i<sh;i++){
	fileSaveContents( "./s"+i+".txt" , shares[i] );
}

console.log("秘密情報をシェア"+sh+"、閾値"+th+"で、分散保存しました。");


//ファイル書き込み
function fileSaveContents( filename , str ){
	var fs = require("fs");
	var fileContent = "";

	var fd = fs.openSync(filename, "w");
	fs.writeSync(fd, str, 0, "utf8");
	fs.closeSync(fd);

	return fileContent;
}