Files
herolib/lib/osal/sshagent/get.v
2024-12-25 08:40:56 +01:00

56 lines
986 B
V

module sshagent
import freeflowuniverse.herolib.core.texttools
@[params]
pub struct KeyGetArgs {
pub mut:
pubkey string
// privkey string
// privkey_path string
name string
}
pub fn (mut agent SSHAgent) get(args_ KeyGetArgs) ?SSHKey {
mut args := args_
args.pubkey = args.pubkey.trim_space()
args.name = texttools.name_fix(args.name)
for mut key in agent.keys {
mut found := false
if args.name.len > 0 && key.name == args.name {
found = true
}
if args.pubkey.len > 0 && key.pubkey == args.pubkey {
found = true
}
if found {
return key
}
}
return none
}
fn (mut agent SSHAgent) pop(pubkey_ string) {
mut x := 0
mut result := 9999
for key in agent.keys {
if key.pubkey == pubkey_ {
result = x
break
}
x += 1
}
if result != 9999 {
if agent.keys.len > result {
agent.keys.delete(x)
} else {
panic('bug')
}
}
}
pub fn (mut agent SSHAgent) exists(args KeyGetArgs) bool {
agent.get(args) or { return false }
return true
}