mirror of
https://github.com/maxgoedjen/secretive.git
synced 2026-03-10 11:37:23 +01:00
WIP
This commit is contained in:
47
SecretAgentKit/PublicKeyStandinFileController.swift
Normal file
47
SecretAgentKit/PublicKeyStandinFileController.swift
Normal file
@@ -0,0 +1,47 @@
|
||||
import Foundation
|
||||
import SecretKit
|
||||
|
||||
public class PublicKeyStandinFileStoreController {
|
||||
|
||||
var files: [PublicKeyStandinFileController] = []
|
||||
|
||||
public init(secrets: [AnySecret]) {
|
||||
let directory = NSHomeDirectory().appending("/PublicKeys")
|
||||
try? FileManager.default.removeItem(at: URL(fileURLWithPath: directory))
|
||||
try? FileManager.default.createDirectory(at: URL(fileURLWithPath: directory), withIntermediateDirectories: false, attributes: nil)
|
||||
// TODO: TEST
|
||||
files = secrets.filter({ $0.name == "Git Signature"})
|
||||
/*files = secrets*/.map { PublicKeyStandinFileController(secret: $0, path: directory.appending("/").appending("test") )}
|
||||
print("Done")
|
||||
}
|
||||
|
||||
enum Constants {
|
||||
static var standinExtension = "secretive-public-key"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class PublicKeyStandinFileController {
|
||||
|
||||
private var fileHandle: FileHandle?
|
||||
private let secret: AnySecret
|
||||
private let keyWriter = OpenSSHKeyWriter()
|
||||
|
||||
public init(secret: AnySecret, path: String) {
|
||||
self.secret = secret
|
||||
resetHandle(path: path)
|
||||
}
|
||||
|
||||
func resetHandle(path: String) {
|
||||
try? FileManager.default.removeItem(atPath: path)
|
||||
let fifo = mkfifo(UnsafePointer(Array(path.utf8CString)), S_IRWXU)
|
||||
assert(fifo == 0)
|
||||
fileHandle = nil
|
||||
fileHandle = FileHandle(forWritingAtPath: path)
|
||||
fileHandle?.writeabilityHandler = { [self] handle in
|
||||
try! handle.write(contentsOf: keyWriter.openSSHString(secret: secret).data(using: .utf8)!)
|
||||
try! fileHandle?.close()
|
||||
// self.resetHandle(path: path)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user