{"action":"created","comment":{"url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments/39086844","id":39086844,"diff_hunk":"@@ -0,0 +1,58 @@\n+- infos = Information about crypto plugin is in keys below\n+- infos/author = Peter Nirschl <peter.nirschl@gmail.com>\n+- infos/licence = BSD\n+- infos/needs = \n+- infos/provides = storage\n+- infos/placements = postgetstorage presetstorage\n+- infos/description = Cryptographic operations\n+\n+## Introduction ##\n+\n+This plugin is a filter plugin allowing Elektra to encrypt values before they are\n+persisted and to decrypt values after they have been read from a backend.\n+\n+The idea is to provide protection of sensible values before they are persisted.\n+This means the value of a key needs to be encrypted before it is written to a file or a database.\n+It also needs to be decrypted whenever an admissible access (read) is being performed.\n+\n+The users of Elektra should not be bothered too much with the internals of the cryptographic operations.\n+Also the cryptographic keys must never be exposed to the outside of the crypto module.\n+\n+## Dependencies ##\n+\n+- `libgcrypt20-dev` or `libgcrypt-devel`\n+\n+## Restrictions ##\n+\n+The key derivation is still WIP.\n+\n+### Planned Features ###\n+\n+- Encryption of values (Key)\n+- Decryption of values (Key)\n+- Key derivation by metadata (password provided within a meta-key)\n+- Key derivation by utilizing the pgp-agent\n+- Key derivation by using a specified key-file (like the SSH client does)\n+\n+The encryption and decryption of values is a straight forward process, once the key and IV are supplied.\n+The key-derivation process in a library is a bit tricky.\n+\n+The crypto plugin itself can hold configuration data about the order of the applied key derivation functions.\n+For example, if a password is provided by a meta-key, it will be used, otherwise we look for a key file.\n+If no key file has been configured, we try to trigger the PGP agent, etc.\n+\n+The following example configuration illustrates this concept:\n+\n+\tsystem/elektra/crypto/config/key-derivation/#0#meta\n+\tsystem/elektra/crypto/config/key-derivation/#1#file\n+\tsystem/elektra/crypto/config/key-derivation/#2#agent\n+\tsystem/elektra/crypto/config/key-file/#0#path=~/.elektra/id_aes\n+\tsystem/elektra/crypto/config/key-file/#1#path=/etc/elektra/id_aes\n+\n+Since it does not make sense to encrypt every key in a KeySet, only Keys marked with a certain\n+meta-key will be considered for encryption/decryption.\n+\n+## Examples ##\n+\n+TBD","path":"src/plugins/crypto/README.md","position":57,"original_position":57,"commit_id":"ae6d7ac8e8ed8c7240e1740d55fec4a4016c36b5","original_commit_id":"ae6d7ac8e8ed8c7240e1740d55fec4a4016c36b5","user":{"login":"markus2330","id":7949075,"avatar_url":"https://avatars.githubusercontent.com/u/7949075?v=3","gravatar_id":"","url":"https://api.github.com/users/markus2330","html_url":"https://github.com/markus2330","followers_url":"https://api.github.com/users/markus2330/followers","following_url":"https://api.github.com/users/markus2330/following{/other_user}","gists_url":"https://api.github.com/users/markus2330/gists{/gist_id}","starred_url":"https://api.github.com/users/markus2330/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markus2330/subscriptions","organizations_url":"https://api.github.com/users/markus2330/orgs","repos_url":"https://api.github.com/users/markus2330/repos","events_url":"https://api.github.com/users/markus2330/events{/privacy}","received_events_url":"https://api.github.com/users/markus2330/received_events","type":"User","site_admin":false},"body":"Examples would be important to get an idea how it should work.","created_at":"2015-09-09T19:42:28Z","updated_at":"2015-09-09T19:42:28Z","html_url":"https://github.com/ElektraInitiative/libelektra/pull/275#discussion_r39086844","pull_request_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275","_links":{"self":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments/39086844"},"html":{"href":"https://github.com/ElektraInitiative/libelektra/pull/275#discussion_r39086844"},"pull_request":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275"}}},"pull_request":{"url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275","id":44557700,"html_url":"https://github.com/ElektraInitiative/libelektra/pull/275","diff_url":"https://github.com/ElektraInitiative/libelektra/pull/275.diff","patch_url":"https://github.com/ElektraInitiative/libelektra/pull/275.patch","issue_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/275","number":275,"state":"open","locked":false,"title":"WIP: Draft for crypto plugin using libgcrypt","user":{"login":"petermax2","id":2538677,"avatar_url":"https://avatars.githubusercontent.com/u/2538677?v=3","gravatar_id":"","url":"https://api.github.com/users/petermax2","html_url":"https://github.com/petermax2","followers_url":"https://api.github.com/users/petermax2/followers","following_url":"https://api.github.com/users/petermax2/following{/other_user}","gists_url":"https://api.github.com/users/petermax2/gists{/gist_id}","starred_url":"https://api.github.com/users/petermax2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/petermax2/subscriptions","organizations_url":"https://api.github.com/users/petermax2/orgs","repos_url":"https://api.github.com/users/petermax2/repos","events_url":"https://api.github.com/users/petermax2/events{/privacy}","received_events_url":"https://api.github.com/users/petermax2/received_events","type":"User","site_admin":false},"body":"I implemented an interface to the gcrypt library enabling the Elektra user to encrypt and decrypt binary values of arbitrary length. The plugin itself does not do anything yet. There are just the test cases and the code for encryption and decryption.\r\n\r\nThere is no support for string values yet, as they need another setter function. I will fix this in the future by adding meta-data to the key as required.","created_at":"2015-09-09T14:37:27Z","updated_at":"2015-09-09T19:42:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"05b30bedf88296338477176c2826402c846dd17d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275/commits","review_comments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275/comments","review_comment_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/275/comments","statuses_url":"https://api.github.com/repos/ElektraInitiative/libelektra/statuses/ae6d7ac8e8ed8c7240e1740d55fec4a4016c36b5","head":{"label":"petermax2:master","ref":"master","sha":"ae6d7ac8e8ed8c7240e1740d55fec4a4016c36b5","user":{"login":"petermax2","id":2538677,"avatar_url":"https://avatars.githubusercontent.com/u/2538677?v=3","gravatar_id":"","url":"https://api.github.com/users/petermax2","html_url":"https://github.com/petermax2","followers_url":"https://api.github.com/users/petermax2/followers","following_url":"https://api.github.com/users/petermax2/following{/other_user}","gists_url":"https://api.github.com/users/petermax2/gists{/gist_id}","starred_url":"https://api.github.com/users/petermax2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/petermax2/subscriptions","organizations_url":"https://api.github.com/users/petermax2/orgs","repos_url":"https://api.github.com/users/petermax2/repos","events_url":"https://api.github.com/users/petermax2/events{/privacy}","received_events_url":"https://api.github.com/users/petermax2/received_events","type":"User","site_admin":false},"repo":{"id":30610180,"name":"libelektra","full_name":"petermax2/libelektra","owner":{"login":"petermax2","id":2538677,"avatar_url":"https://avatars.githubusercontent.com/u/2538677?v=3","gravatar_id":"","url":"https://api.github.com/users/petermax2","html_url":"https://github.com/petermax2","followers_url":"https://api.github.com/users/petermax2/followers","following_url":"https://api.github.com/users/petermax2/following{/other_user}","gists_url":"https://api.github.com/users/petermax2/gists{/gist_id}","starred_url":"https://api.github.com/users/petermax2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/petermax2/subscriptions","organizations_url":"https://api.github.com/users/petermax2/orgs","repos_url":"https://api.github.com/users/petermax2/repos","events_url":"https://api.github.com/users/petermax2/events{/privacy}","received_events_url":"https://api.github.com/users/petermax2/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/petermax2/libelektra","description":"Elektra provides a universal and secure framework to store configuration parameters in a global, hierarchical key database.","fork":true,"url":"https://api.github.com/repos/petermax2/libelektra","forks_url":"https://api.github.com/repos/petermax2/libelektra/forks","keys_url":"https://api.github.com/repos/petermax2/libelektra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/petermax2/libelektra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/petermax2/libelektra/teams","hooks_url":"https://api.github.com/repos/petermax2/libelektra/hooks","issue_events_url":"https://api.github.com/repos/petermax2/libelektra/issues/events{/number}","events_url":"https://api.github.com/repos/petermax2/libelektra/events","assignees_url":"https://api.github.com/repos/petermax2/libelektra/assignees{/user}","branches_url":"https://api.github.com/repos/petermax2/libelektra/branches{/branch}","tags_url":"https://api.github.com/repos/petermax2/libelektra/tags","blobs_url":"https://api.github.com/repos/petermax2/libelektra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/petermax2/libelektra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/petermax2/libelektra/git/refs{/sha}","trees_url":"https://api.github.com/repos/petermax2/libelektra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/petermax2/libelektra/statuses/{sha}","languages_url":"https://api.github.com/repos/petermax2/libelektra/languages","stargazers_url":"https://api.github.com/repos/petermax2/libelektra/stargazers","contributors_url":"https://api.github.com/repos/petermax2/libelektra/contributors","subscribers_url":"https://api.github.com/repos/petermax2/libelektra/subscribers","subscription_url":"https://api.github.com/repos/petermax2/libelektra/subscription","commits_url":"https://api.github.com/repos/petermax2/libelektra/commits{/sha}","git_commits_url":"https://api.github.com/repos/petermax2/libelektra/git/commits{/sha}","comments_url":"https://api.github.com/repos/petermax2/libelektra/comments{/number}","issue_comment_url":"https://api.github.com/repos/petermax2/libelektra/issues/comments{/number}","contents_url":"https://api.github.com/repos/petermax2/libelektra/contents/{+path}","compare_url":"https://api.github.com/repos/petermax2/libelektra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/petermax2/libelektra/merges","archive_url":"https://api.github.com/repos/petermax2/libelektra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/petermax2/libelektra/downloads","issues_url":"https://api.github.com/repos/petermax2/libelektra/issues{/number}","pulls_url":"https://api.github.com/repos/petermax2/libelektra/pulls{/number}","milestones_url":"https://api.github.com/repos/petermax2/libelektra/milestones{/number}","notifications_url":"https://api.github.com/repos/petermax2/libelektra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/petermax2/libelektra/labels{/name}","releases_url":"https://api.github.com/repos/petermax2/libelektra/releases{/id}","created_at":"2015-02-10T19:27:08Z","updated_at":"2015-09-09T14:32:51Z","pushed_at":"2015-09-09T15:33:06Z","git_url":"git://github.com/petermax2/libelektra.git","ssh_url":"git@github.com:petermax2/libelektra.git","clone_url":"https://github.com/petermax2/libelektra.git","svn_url":"https://github.com/petermax2/libelektra","homepage":"","size":28735,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ElektraInitiative:master","ref":"master","sha":"12a1c55589ab4d03fb303c4e30fbdd84a717442d","user":{"login":"ElektraInitiative","id":7949092,"avatar_url":"https://avatars.githubusercontent.com/u/7949092?v=3","gravatar_id":"","url":"https://api.github.com/users/ElektraInitiative","html_url":"https://github.com/ElektraInitiative","followers_url":"https://api.github.com/users/ElektraInitiative/followers","following_url":"https://api.github.com/users/ElektraInitiative/following{/other_user}","gists_url":"https://api.github.com/users/ElektraInitiative/gists{/gist_id}","starred_url":"https://api.github.com/users/ElektraInitiative/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElektraInitiative/subscriptions","organizations_url":"https://api.github.com/users/ElektraInitiative/orgs","repos_url":"https://api.github.com/users/ElektraInitiative/repos","events_url":"https://api.github.com/users/ElektraInitiative/events{/privacy}","received_events_url":"https://api.github.com/users/ElektraInitiative/received_events","type":"Organization","site_admin":false},"repo":{"id":21063580,"name":"libelektra","full_name":"ElektraInitiative/libelektra","owner":{"login":"ElektraInitiative","id":7949092,"avatar_url":"https://avatars.githubusercontent.com/u/7949092?v=3","gravatar_id":"","url":"https://api.github.com/users/ElektraInitiative","html_url":"https://github.com/ElektraInitiative","followers_url":"https://api.github.com/users/ElektraInitiative/followers","following_url":"https://api.github.com/users/ElektraInitiative/following{/other_user}","gists_url":"https://api.github.com/users/ElektraInitiative/gists{/gist_id}","starred_url":"https://api.github.com/users/ElektraInitiative/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ElektraInitiative/subscriptions","organizations_url":"https://api.github.com/users/ElektraInitiative/orgs","repos_url":"https://api.github.com/users/ElektraInitiative/repos","events_url":"https://api.github.com/users/ElektraInitiative/events{/privacy}","received_events_url":"https://api.github.com/users/ElektraInitiative/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ElektraInitiative/libelektra","description":"Elektra provides a universal and secure framework to store configuration parameters in a global, hierarchical key database.","fork":false,"url":"https://api.github.com/repos/ElektraInitiative/libelektra","forks_url":"https://api.github.com/repos/ElektraInitiative/libelektra/forks","keys_url":"https://api.github.com/repos/ElektraInitiative/libelektra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ElektraInitiative/libelektra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ElektraInitiative/libelektra/teams","hooks_url":"https://api.github.com/repos/ElektraInitiative/libelektra/hooks","issue_events_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/events{/number}","events_url":"https://api.github.com/repos/ElektraInitiative/libelektra/events","assignees_url":"https://api.github.com/repos/ElektraInitiative/libelektra/assignees{/user}","branches_url":"https://api.github.com/repos/ElektraInitiative/libelektra/branches{/branch}","tags_url":"https://api.github.com/repos/ElektraInitiative/libelektra/tags","blobs_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/refs{/sha}","trees_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ElektraInitiative/libelektra/statuses/{sha}","languages_url":"https://api.github.com/repos/ElektraInitiative/libelektra/languages","stargazers_url":"https://api.github.com/repos/ElektraInitiative/libelektra/stargazers","contributors_url":"https://api.github.com/repos/ElektraInitiative/libelektra/contributors","subscribers_url":"https://api.github.com/repos/ElektraInitiative/libelektra/subscribers","subscription_url":"https://api.github.com/repos/ElektraInitiative/libelektra/subscription","commits_url":"https://api.github.com/repos/ElektraInitiative/libelektra/commits{/sha}","git_commits_url":"https://api.github.com/repos/ElektraInitiative/libelektra/git/commits{/sha}","comments_url":"https://api.github.com/repos/ElektraInitiative/libelektra/comments{/number}","issue_comment_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/comments{/number}","contents_url":"https://api.github.com/repos/ElektraInitiative/libelektra/contents/{+path}","compare_url":"https://api.github.com/repos/ElektraInitiative/libelektra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ElektraInitiative/libelektra/merges","archive_url":"https://api.github.com/repos/ElektraInitiative/libelektra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ElektraInitiative/libelektra/downloads","issues_url":"https://api.github.com/repos/ElektraInitiative/libelektra/issues{/number}","pulls_url":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls{/number}","milestones_url":"https://api.github.com/repos/ElektraInitiative/libelektra/milestones{/number}","notifications_url":"https://api.github.com/repos/ElektraInitiative/libelektra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ElektraInitiative/libelektra/labels{/name}","releases_url":"https://api.github.com/repos/ElektraInitiative/libelektra/releases{/id}","created_at":"2014-06-21T08:01:04Z","updated_at":"2015-08-30T22:05:09Z","pushed_at":"2015-09-09T15:33:06Z","git_url":"git://github.com/ElektraInitiative/libelektra.git","ssh_url":"git@github.com:ElektraInitiative/libelektra.git","clone_url":"https://github.com/ElektraInitiative/libelektra.git","svn_url":"https://github.com/ElektraInitiative/libelektra","homepage":"","size":31115,"stargazers_count":17,"watchers_count":17,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14,"mirror_url":null,"open_issues_count":34,"forks":14,"open_issues":34,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275"},"html":{"href":"https://github.com/ElektraInitiative/libelektra/pull/275"},"issue":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/275"},"comments":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/issues/275/comments"},"review_comments":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275/comments"},"review_comment":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/pulls/275/commits"},"statuses":{"href":"https://api.github.com/repos/ElektraInitiative/libelektra/statuses/ae6d7ac8e8ed8c7240e1740d55fec4a4016c36b5"}}}}