{"id":16895767,"url":"https://github.com/ytti/kala","last_synced_at":"2025-10-06T17:43:22.482Z","repository":{"id":16670629,"uuid":"19426353","full_name":"ytti/kala","owner":"ytti","description":"golang password manager lib + cli","archived":false,"fork":false,"pushed_at":"2014-05-10T15:05:55.000Z","size":152,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-20T13:59:32.122Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ytti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-04T12:48:38.000Z","updated_at":"2014-05-10T15:05:55.000Z","dependencies_parsed_at":"2022-09-15T21:11:14.168Z","dependency_job_id":null,"html_url":"https://github.com/ytti/kala","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ytti/kala","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytti%2Fkala","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytti%2Fkala/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytti%2Fkala/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytti%2Fkala/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ytti","download_url":"https://codeload.github.com/ytti/kala/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ytti%2Fkala/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266481732,"owners_count":23935938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T17:25:59.835Z","updated_at":"2025-10-06T17:43:17.426Z","avatar_url":"https://github.com/ytti.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kala\nLibrary and CLI UI for managing passwords. I have no clue about crypto and I\nonly wrote this to learn basics of golang. So password manager by security and\nprogramming language incompetent developer, you're gonna love this.\n\n## Security\nEvery entry has 'secret entry' which right now includes only 'passphrase' but\ncould have something like HOTP master key etc in future. This 'secret entry' is\nencrypted with salsa20 and key is derived with scrypt from master passphrase\nsalted with mastersalt+entry_name.\n\nEntry is put into array of entries, entries is encrypted with salsa20  and key\nis derived with scrypt from master password with random mastersalt.\n\nRuntime only secrets which you're interested in are decrypted, secrets for\nentries you didn't ask for are not touched. So perhaps in some corner-cases\nwhen memory is compromised but master password is not, you avoid compromising\nall of the passwords. I don't know if this makes sense or not.\n\nI tried not to copy key or masterpassword in memory, rather just pass pointer\n(slice when copied does not copy content, unlike array, so password slice is\nusually copied straight off). Not sure if that makes any sense either.\n\n## Install\ngo get https://github.com/ytti/kala/\n\n## Use\n```\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala\nCreating new /home/ytti/.config/kala/kala.json, new master passphrase needed\n          Passphrase [] : \n  Passphrase (again) [] : \nEmpty /home/ytti/.config/kala/kala.json created\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala -a \"google apps\"\nPassphrase for /home/ytti/.config/kala/kala.json: \n     Name [google apps] : \n     Host [google apps] : https://mail.ytti.fi\n            Username [] : saku@ytti.fi\n         Information [] : \n          Passphrase [] : \n  Passphrase (again) [] : \nAdd Entry (YES/no): yes\nEntry written to file\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala -a \"twitter\"    \nPassphrase for /home/ytti/.config/kala/kala.json: \n         Name [twitter] : \n         Host [twitter] : https://twitter.com\n            Username [] : ytti\n         Information [] : nada\n          Passphrase [] : \n  Passphrase (again) [] : \nAdd Entry (YES/no): yes\nEntry written to file\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala --export\nPassphrase for /home/ytti/.config/kala/kala.json: \n[\n  {\n    \"Name\": \"google apps\",\n    \"Host\": \"https://mail.ytti.fi\",\n    \"Username\": \"saku@ytti.fi\",\n    \"Information\": \"\",\n    \"Secret\": {\n      \"Passphrase\": \"poop\"\n    }\n  },\n  {\n    \"Name\": \"twitter\",\n    \"Host\": \"https://twitter.com\",\n    \"Username\": \"ytti\",\n    \"Information\": \"nada\",\n    \"Secret\": {\n      \"Passphrase\": \"meh\"\n    }\n  }\n]\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala twit    \nPassphrase for /home/ytti/.config/kala/kala.json: \ntwitter\n        Host : https://twitter.com\n    Username : ytti\n Information : nada\n  Passphrase : meh\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala ytti\nPassphrase for /home/ytti/.config/kala/kala.json: \ngoogle apps\n        Host : https://mail.ytti.fi\n    Username : saku@ytti.fi\n Information : \n  Passphrase : poop\n\ntwitter\n        Host : https://twitter.com\n    Username : ytti\n Information : nada\n  Passphrase : meh\n\n[1 ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala -e twitter\nPassphrase for /home/ytti/.config/kala/kala.json: \n\ntwitter\n        Host : https://twitter.com\n    Username : ytti\n Information : nada\nEdit this entry (yes/NO): yes\n         Name [twitter] : \nHost [https://twitter.com] : http://twitter.com\n        Username [ytti] : \n     Information [nada] : \n          Passphrase [] : \n  Passphrase (again) [] : \nEntry changed\n\n1 entries changed, commit changes (yes/NO): yes\nChanges written to file\n\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% ./kala -d twitter\nPassphrase for /home/ytti/.config/kala/kala.json: \n\ntwitter\n        Host : http://twitter.com\n    Username : ytti\n Information : nada\nDelete this entry (yes/NO): yes\nMarking for deletion\n\n1 entries marked for deletion, commit changes (yes/NO): yes\nDeletions written to file\n\n[ytti@ytti.fi ~/go/src/github.com/ytti/kala]% \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fytti%2Fkala","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fytti%2Fkala","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fytti%2Fkala/lists"}