Update Picocrypt.go
This commit is contained in:
parent
c4fca78696
commit
8e4a72bc38
|
@ -94,6 +94,9 @@ var shredTotal float32
|
||||||
var shredOverlay string
|
var shredOverlay string
|
||||||
var shredding = "Ready."
|
var shredding = "Ready."
|
||||||
|
|
||||||
|
var recombine bool
|
||||||
|
|
||||||
|
|
||||||
// User input variables
|
// User input variables
|
||||||
var password string
|
var password string
|
||||||
var cPassword string
|
var cPassword string
|
||||||
|
@ -178,7 +181,7 @@ func startUI(){
|
||||||
),
|
),
|
||||||
|
|
||||||
// Label listing the input files and a button to clear input files
|
// Label listing the input files and a button to clear input files
|
||||||
//g.Dummy(10,0),
|
//g.Dummy(0,10),
|
||||||
g.Row(
|
g.Row(
|
||||||
g.Label(inputLabel),
|
g.Label(inputLabel),
|
||||||
g.Dummy(-55,0),
|
g.Dummy(-55,0),
|
||||||
|
@ -503,6 +506,7 @@ func startUI(){
|
||||||
// Handle files dropped into Picocrypt by user
|
// Handle files dropped into Picocrypt by user
|
||||||
func onDrop(names []string){
|
func onDrop(names []string){
|
||||||
_status = ""
|
_status = ""
|
||||||
|
recombine = false
|
||||||
if tab==0{
|
if tab==0{
|
||||||
// Clear variables
|
// Clear variables
|
||||||
onlyFiles = nil
|
onlyFiles = nil
|
||||||
|
@ -540,11 +544,29 @@ func onDrop(names []string){
|
||||||
files++
|
files++
|
||||||
name := filepath.Base(names[0])
|
name := filepath.Base(names[0])
|
||||||
|
|
||||||
|
nums := []string{"0","1","2","3","4","5","6","7","8","9"}
|
||||||
|
endsNum := false
|
||||||
|
for _,i := range(nums){
|
||||||
|
if strings.HasSuffix(names[0],i){
|
||||||
|
endsNum = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isSplit := strings.Contains(names[0],".pcv.")&&endsNum
|
||||||
|
|
||||||
// Decide if encrypting or decrypting
|
// Decide if encrypting or decrypting
|
||||||
if strings.HasSuffix(names[0],".pcv"){
|
if strings.HasSuffix(names[0],".pcv")||isSplit{
|
||||||
mode = "decrypt"
|
mode = "decrypt"
|
||||||
inputLabel = name+" (will decrypt)"
|
inputLabel = name+" (will decrypt)"
|
||||||
outputEntry = names[0][:len(names[0])-4]
|
|
||||||
|
if isSplit{
|
||||||
|
ind := strings.Index(names[0],".pcv")
|
||||||
|
names[0] = names[0][:ind]
|
||||||
|
outputEntry = names[0]
|
||||||
|
recombine = true
|
||||||
|
}else{
|
||||||
|
outputEntry = names[0][:len(names[0])-4]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Open input file in read-only mode
|
// Open input file in read-only mode
|
||||||
fin,_ := os.Open(names[0])
|
fin,_ := os.Open(names[0])
|
||||||
|
@ -695,6 +717,44 @@ func work(){
|
||||||
file.Close()
|
file.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if recombine{
|
||||||
|
status = "Recombining file..."
|
||||||
|
total := 0
|
||||||
|
|
||||||
|
for{
|
||||||
|
_,err := os.Stat(fmt.Sprintf("%s.%d",inputFile+".pcv",total))
|
||||||
|
if err!=nil{
|
||||||
|
break
|
||||||
|
}
|
||||||
|
total++
|
||||||
|
}
|
||||||
|
fout,_ := os.OpenFile(
|
||||||
|
outputEntry+".pcv",
|
||||||
|
os.O_RDWR|os.O_CREATE|os.O_TRUNC,
|
||||||
|
0755,
|
||||||
|
)
|
||||||
|
for i:=0;i<total;i++{
|
||||||
|
fin,_ := os.Open(fmt.Sprintf("%s.%d",inputFile+".pcv",i))
|
||||||
|
for{
|
||||||
|
data := make([]byte,1048576)
|
||||||
|
read,err := fin.Read(data)
|
||||||
|
if err!=nil{
|
||||||
|
break
|
||||||
|
}
|
||||||
|
data = data[:read]
|
||||||
|
fout.Write(data)
|
||||||
|
}
|
||||||
|
fin.Close()
|
||||||
|
progressInfo = fmt.Sprintf("%d/%d",i,total)
|
||||||
|
progress = float32(i)/float32(total)
|
||||||
|
g.Update()
|
||||||
|
}
|
||||||
|
fout.Close()
|
||||||
|
outputFile = outputEntry
|
||||||
|
inputFile = outputEntry+".pcv"
|
||||||
|
progressInfo = ""
|
||||||
|
}
|
||||||
|
|
||||||
fmt.Println(inputFile)
|
fmt.Println(inputFile)
|
||||||
stat,_ := os.Stat(inputFile)
|
stat,_ := os.Stat(inputFile)
|
||||||
|
@ -828,19 +888,28 @@ func work(){
|
||||||
status = "Deriving key..."
|
status = "Deriving key..."
|
||||||
|
|
||||||
// Derive encryption/decryption key
|
// Derive encryption/decryption key
|
||||||
var mem uint32 = 1048576;
|
var key []byte
|
||||||
if fast{
|
if fast{
|
||||||
mem /= 2
|
key = argon2.IDKey(
|
||||||
|
[]byte(password),
|
||||||
|
salt,
|
||||||
|
4,
|
||||||
|
131072,
|
||||||
|
4,
|
||||||
|
32,
|
||||||
|
)[:]
|
||||||
|
}else{
|
||||||
|
key = argon2.IDKey(
|
||||||
|
[]byte(password),
|
||||||
|
salt,
|
||||||
|
8,
|
||||||
|
1048576,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
)[:]
|
||||||
}
|
}
|
||||||
key := argon2.IDKey(
|
|
||||||
[]byte(password),
|
fmt.Println("key",key)
|
||||||
salt,
|
|
||||||
8,
|
|
||||||
mem,
|
|
||||||
8,
|
|
||||||
32,
|
|
||||||
)[:]
|
|
||||||
//fmt.Println("key",key)
|
|
||||||
|
|
||||||
if keyfile{
|
if keyfile{
|
||||||
kin,_ := os.Open(keyfilePath)
|
kin,_ := os.Open(keyfilePath)
|
||||||
|
@ -951,11 +1020,7 @@ func work(){
|
||||||
/*for _,j := range(_mac){
|
/*for _,j := range(_mac){
|
||||||
tmp = append(tmp,j)
|
tmp = append(tmp,j)
|
||||||
}*/
|
}*/
|
||||||
//fmt.Println("ENCRYPTED NONCES: ",tmp)
|
|
||||||
// XXXXXXXXXXXXXXXXFSFSDFFFSFF
|
|
||||||
//var err error
|
|
||||||
//nonces,err = cipher.Open(nil,nonce,tmp,nil)
|
|
||||||
//fmt.Println(err)
|
|
||||||
var authentic bool
|
var authentic bool
|
||||||
nonces,authentic = monocypher.Unlock(tmp,nonce,key,_mac)
|
nonces,authentic = monocypher.Unlock(tmp,nonce,key,_mac)
|
||||||
if !authentic{
|
if !authentic{
|
||||||
|
@ -977,6 +1042,8 @@ func work(){
|
||||||
fin.Close()
|
fin.Close()
|
||||||
fout.Close()
|
fout.Close()
|
||||||
os.Remove(outputFile)
|
os.Remove(outputFile)
|
||||||
|
_status = "Operation cancelled by user."
|
||||||
|
_status_color = color.RGBA{0xff,0xff,0xff,255}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//fmt.Println("Encrypt/decrypt loop")
|
//fmt.Println("Encrypt/decrypt loop")
|
||||||
|
@ -1112,26 +1179,12 @@ func work(){
|
||||||
fin.Close()
|
fin.Close()
|
||||||
fout.Close()
|
fout.Close()
|
||||||
|
|
||||||
// Delete the temporary zip file
|
|
||||||
if len(allFiles)>1{
|
|
||||||
if erase{
|
|
||||||
shred([]string{outputEntry}[:],false)
|
|
||||||
}else{
|
|
||||||
os.Remove(outputEntry)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Println("==============================")
|
|
||||||
if erase{
|
|
||||||
shred(onlyFiles,false)
|
|
||||||
shred(onlyFolders,false)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if split{
|
if split{
|
||||||
status = "Splitting file..."
|
status = "Splitting file..."
|
||||||
stat,_ := os.Stat(outputFile)
|
stat,_ := os.Stat(outputFile)
|
||||||
size := stat.Size()
|
size := stat.Size()
|
||||||
finished := 0
|
finished := 0
|
||||||
|
var splitted []string
|
||||||
fmt.Println(size)
|
fmt.Println(size)
|
||||||
chunkSize,_ := strconv.Atoi(splitSize)
|
chunkSize,_ := strconv.Atoi(splitSize)
|
||||||
fmt.Println(splitSelected)
|
fmt.Println(splitSelected)
|
||||||
|
@ -1158,6 +1211,19 @@ func work(){
|
||||||
if err!=nil{
|
if err!=nil{
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
if !working{
|
||||||
|
fin.Close()
|
||||||
|
fout.Close()
|
||||||
|
_status = "Operation cancelled by user."
|
||||||
|
_status_color = color.RGBA{0xff,0xff,0xff,255}
|
||||||
|
for _,j := range(splitted){
|
||||||
|
os.Remove(j)
|
||||||
|
}
|
||||||
|
os.Remove(fmt.Sprintf("%s.%d",outputFile,i))
|
||||||
|
fmt.Println("outputFile",outputFile)
|
||||||
|
os.Remove(outputFile)
|
||||||
|
return
|
||||||
|
}
|
||||||
data = data[:read]
|
data = data[:read]
|
||||||
fout.Write(data)
|
fout.Write(data)
|
||||||
done += read
|
done += read
|
||||||
|
@ -1167,14 +1233,45 @@ func work(){
|
||||||
}
|
}
|
||||||
fout.Close()
|
fout.Close()
|
||||||
finished++
|
finished++
|
||||||
|
splitted = append(splitted,fmt.Sprintf("%s.%d",outputFile,i))
|
||||||
progress = float32(finished)/float32(chunks)
|
progress = float32(finished)/float32(chunks)
|
||||||
progressInfo = fmt.Sprintf("%d/%d",finished,chunks)
|
progressInfo = fmt.Sprintf("%d/%d",finished,chunks)
|
||||||
g.Update()
|
g.Update()
|
||||||
}
|
}
|
||||||
fin.Close()
|
fin.Close()
|
||||||
os.Remove(outputFile)
|
if erase{
|
||||||
|
status = "Shredding the unsplitted file..."
|
||||||
|
progressInfo = ""
|
||||||
|
shred([]string{outputFile}[:],false)
|
||||||
|
}else{
|
||||||
|
os.Remove(outputFile)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if recombine{
|
||||||
|
os.Remove(inputFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete the temporary zip file
|
||||||
|
if len(allFiles)>1{
|
||||||
|
if erase{
|
||||||
|
progressInfo = ""
|
||||||
|
status = "Shredding temporary files..."
|
||||||
|
shred([]string{outputEntry}[:],false)
|
||||||
|
}else{
|
||||||
|
os.Remove(outputEntry)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("==============================")
|
||||||
|
if erase{
|
||||||
|
progressInfo = ""
|
||||||
|
shred(onlyFiles,false)
|
||||||
|
shred(onlyFolders,false)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
resetUI()
|
resetUI()
|
||||||
if kept{
|
if kept{
|
||||||
|
|
Loading…
Reference in New Issue