passforios/pass/Models/PasswordEntity.swift

53 lines
1.7 KiB
Swift
Raw Normal View History

2017-02-11 23:45:00 +08:00
//
// PasswordEntity.swift
// pass
//
// Created by Mingshen Sun on 11/2/2017.
// Copyright © 2017 Bob Sun. All rights reserved.
//
import Foundation
import SwiftyUserDefaults
extension PasswordEntity {
2017-03-16 00:38:38 +08:00
var nameWithCategory: String {
get {
if let p = path, p.hasSuffix(".gpg") {
return p.substring(to: p.index(p.endIndex, offsetBy: -4))
} else {
return ""
}
}
}
func decrypt(passphrase: String) throws -> Password? {
2017-02-11 23:45:00 +08:00
var password: Password?
let encryptedDataPath = URL(fileURLWithPath: "\(Globals.repositoryPath)/\(path!)")
2017-02-11 23:45:00 +08:00
let encryptedData = try Data(contentsOf: encryptedDataPath)
let decryptedData = try PasswordStore.shared.pgp.decryptData(encryptedData, passphrase: passphrase)
let plainText = String(data: decryptedData, encoding: .utf8) ?? ""
2017-02-11 23:45:00 +08:00
password = Password(name: name!, plainText: plainText)
return password
}
func encrypt(password: Password) throws -> Data {
name = password.name
let plainData = password.getPlainData()
let pgp = PasswordStore.shared.pgp
let encryptedData = try pgp.encryptData(plainData, usingPublicKey: pgp.getKeysOf(.public)[0], armored: Defaults[.encryptInArmored])
2017-02-11 23:45:00 +08:00
return encryptedData
}
2017-03-10 23:01:56 -08:00
func getCategoryText() -> String {
var parentEntity = parent
var passwordCategoryArray: [String] = []
while parentEntity != nil {
passwordCategoryArray.append(parentEntity!.name!)
parentEntity = parentEntity!.parent
}
passwordCategoryArray.reverse()
return passwordCategoryArray.joined(separator: " > ")
}
2017-02-11 23:45:00 +08:00
}