Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementing basic functionality of keychain #6

Closed
roman-modelist-dev opened this issue Apr 23, 2018 · 6 comments
Closed

Implementing basic functionality of keychain #6

roman-modelist-dev opened this issue Apr 23, 2018 · 6 comments
Assignees
Labels
enhancement New feature or request

Comments

@roman-modelist-dev
Copy link
Contributor

Need to implement basic functions of keychain declared in #2.

@roman-modelist-dev roman-modelist-dev added the enhancement New feature or request label Apr 23, 2018
@roman-modelist-dev roman-modelist-dev self-assigned this Apr 23, 2018
@roman-modelist-dev
Copy link
Contributor Author

At this moment it is implemented:

  • sign command for bitshares
  • key files search by filename and username

Aslo reflection future from lib/fc has been applied for parsing/serialization pipe commands and parsing key files.

Next step:

  • key encryption implementing

@roman-modelist-dev
Copy link
Contributor Author

Today I was explored openssl api to find out how key encryption is implemented in the openssl.
Current status: in progress

@roman-modelist-dev
Copy link
Contributor Author

Question:
Keychain can handle requests from different users in the OS. Сonsequently, one user can remove key owned by another user.
Is it necessary to provide access control system? If necessary we need to discuss how to properly implement.
I assume on linux we can use real UID to identify users. But it may not be possible on other platforms. Another way is to use user password for authenticate user request. However keychain use cases allow to store keys in unencrypted format.
So, it is needed to discuss this question on the focus group.

@roman-modelist-dev
Copy link
Contributor Author

File encryption (symmetric) has been realized.

Next step: user identification

  • Creating abstract interface function that will identify user sending request.
  • Implementing identify function on window and unix, that idenity user by operating system api.
  • Modify rpc functions and key file format if needed.

@roman-modelist-dev
Copy link
Contributor Author

Implementing identify function, brief overview:

  1. unix -- using SO_PEERCRED option
    http://man7.org/linux/man-pages/man7/socket.7.html
    https://stackoverflow.com/questions/9898961/is-there-a-way-to-get-the-uid-of-the-other-end-of-a-unix-socket-connection
  2. windows
  • get list of ports and process pid - s
  • get user ID that own process (process owner)

@ghost
Copy link

ghost commented Nov 27, 2018

Is this issue solved?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants