| commit | 988fb7b26942a8ddbaa6be4ce34aa4efe4044b43 | [log] [tgz] |
|---|---|---|
| author | Adrian Ambrożewicz <adrian.ambrozewicz@linux.intel.com> | Mon Jan 13 18:52:46 2020 +0100 |
| committer | Agata Olender <agata.olender@intel.com> | Tue Mar 31 07:41:12 2020 +0000 |
| tree | 25bb7bed1c0e2800b63a4b27147c4a1c401c0ba4 | |
| parent | 09d02f87cf3e976a97010baede551d342325f239 [diff] |
Authentication support for Legacy mode
This change introduces new 'Mount' API argument - UNIX_FD for unnamed pipe.
This unnamed pipe is utilized to securely send secret data over D-Bus.
Currently data consists of null-terminated char buffers with username and
password, that are passed as InsertMedia action parameters.
Data on receiving side is encapsulated into classes whose role is to:
- keep secret as short-lived as possible
- erase secret from memory when it's not needed
- pass secrets (and format them) to another secure container with above
capabilities
New classes:
- Credentials: is a class encapsulating login and password. It zeroes them
at destruction.
- CredentialProvider: contains Credentials, specifies SecureBuffer, allows
to store credentials in SecureBuffer
New behavior:
- When credentials are provided they are encapsulated as char array of two
null-terminated strings
- Pipe is opened as a medium to send this buffer
- UNIX_FD of the pipe source is passed in ‘Mount’ call. Virtual-Media
service reads from credentials over the pipe
Tested:
Manual and automated tests:
- positive and negative tests for authentication on both CIFS and HTTPS
resources
- error injection (ill-formed data transfered over pipe, pipe broken etc.)
Signed-off-by: Agata Olender <agata.olender@intel.com>
Change-Id: I5b330b18c4bff222eab3062abfe27b5adaebf877
This component attempts to be a "do everything" embedded webserver for openbmc.
At this time, the webserver implements a few interfaces:
BMCWeb is configured by setting -D flags that correspond to options in bmcweb/CMakeLists.txt and then compiling. For example, cmake -DBMCWEB_ENABLE_KVM=NO ... followed by make. The option names become C++ preprocessor symbols that control which code is compiled into the program.
When BMCWeb starts running, it reads persistent configuration data (such as UUID and session data) from a local file. If this is not usable, it generates a new configuration.
When BMCWeb SSL support is enabled and a usable certificate is not found, it will generate a self-sign a certificate before launching the server. The keys are generated by the secp384r1 algorithm. The certificate
C=US, O=OpenBMC, CN=testhost,SHA-256 algorithm.