~~NOTOC~~
{{wvds:title>Installation}}
===== Installation: 3-Schritte OEM-Integration =====
Der WvdS Crypto Service ist eine **fertige Black-Box**. Sie muessen nichts kompilieren oder konfigurieren. Folgen Sie einfach diesen drei Schritten.
----
==== Schritt 1: Daemon ins L4Re Image einbinden ====
Fuegen Sie den Crypto Service zu Ihrer ''modules.list'' hinzu:
-- modules.list
module wvds_crypto_service
module libcrypto.so.3
module libssl.so.3
----
==== Schritt 2: Daemon starten (Ned-Script) ====
Starten Sie den Daemon in Ihrem Ned-Script:
local L4 = require("L4")
-- Shared Memory fuer Kommunikation erstellen
local crypto_ds = L4.Env.ram:create(64 * 1024, L4.Dataspace.ALL):m("rw")
-- Crypto Daemon starten
local crypto_daemon = L4.default_loader:start(
{ caps = { crypto_ep = crypto_ds:svr() } },
"rom/wvds_crypto_service"
)
-- Ihr Gateway bekommt die Client-Seite
local gateway = L4.default_loader:start(
{ caps = { crypto_ep = crypto_ds } },
"rom/iss_gateway"
)
**Erklaerung:**
* ''crypto_ds'' - Shared Memory Dataspace (64 KB)
* ''crypto_ep = crypto_ds:svr()'' - Server-Seite fuer Daemon
* ''crypto_ep = crypto_ds'' - Client-Seite fuer Ihr Gateway
----
==== Schritt 3: Aus Ihrem Code kommunizieren ====
Inkludieren Sie den Header und verwenden Sie die Helper-Funktionen:
#include "wvds_crypto.h"
void encrypt_sensor_data(const uint8_t* data, size_t len) {
uint8_t request[1024];
size_t request_len = sizeof(request);
// Request bauen
int rc = wvds_build_aes_encrypt_request(
request, &request_len,
1, // Key-ID
"sensor", 6, // AAD
data, len // Plaintext
);
if (rc == 0) {
// Request in Shared Memory kopieren
memcpy(shared_memory, request, request_len);
// Daemon signalisieren
signal_crypto_daemon();
// Auf Antwort warten
wait_for_response();
// Response parsen
uint8_t nonce[12], tag[16], ciphertext[1024];
size_t ct_len;
wvds_parse_aes_encrypt_response(
shared_memory, response_len,
nonce, tag, ciphertext, &ct_len
);
}
}
**Das ist alles!**
----
==== Optionale Konfiguration ====
Falls Sie die Default-Einstellungen aendern moechten, koennen Sie eine ''config.json'' bereitstellen:
{
"version": "0.2.0",
"key_storage": {
"type": "file",
"path": "/data/keys",
"encryption": "aes-256-gcm"
},
"rate_limit": {
"max_requests_per_second": 1000,
"burst": 100
},
"logging": {
"level": "info",
"destination": "syslog"
}
}
=== Key Storage Optionen ===
| Type | Beschreibung |
| ''file'' | Keys im Dateisystem (Default) |
| ''tpm'' | Keys im TPM 2.0 |
| ''hsm'' | Keys im externen HSM |
----
==== Verifizierung ====
Pruefen Sie, ob der Daemon korrekt laeuft:
# L4Re Console
l4> ps
... wvds_crypto_service ...
# Test-Request senden
l4> crypto_test encrypt "Hello World"
OK: Ciphertext = 0x...
----
==== Troubleshooting ====
| Problem | Loesung |
| Daemon startet nicht | ''libcrypto.so.3'' in modules.list? |
| Shared Memory Fehler | Dataspace gross genug (min 64 KB)? |
| Capability Error | ''crypto_ep'' korrekt gemappt? |
| FIPS Fehler | ''fipsmodule.cnf'' vorhanden? |
Siehe auch [[.:sicherheit#troubleshooting|Sicherheit > Troubleshooting]] fuer weitere Fehler.
----
[[.:start|< Zurueck zur Uebersicht]] | [[.:integration|Weiter: Code-Beispiele >]]