plugmate-secure-file-io.ino

TrustKernel PlugMate : Ordinateur miniature USB-C sécurisé sous PlugOS · Fichier : plugmate-secure-file-io.ino · Langage : Kotlin · Usage : Écrire et lire des fichiers sensibles dans le stockage chiffré isolé du PlugMate.

Démontre comment utiliser le stockage interne chiffré d'Android 14 pour sauvegarder des données sensibles sans exposer les clés de chiffrement à l'hôte.

Le PlugMate utilise un stockage eMMC chiffré matériellement. Ce code utilise l'API standard getFilesDir() de Kotlin/Android. L'application doit être signée et installée sur le PlugMate via ADB ou le store interne. Les données ne sont accessibles que par l'application elle-même grâce à l'isolation stricte du système. Aucune configuration réseau n'est nécessaire pour cette opération locale.

plugmate-secure-file-io.ino

package com.trustkernel.plugmate.demo

import android.content.Context
import java.io.File
import java.io.FileOutputStream
import java.io.FileInputStream
import java.nio.charset.StandardCharsets

object SecureStorageDemo {
    /**
     * Écrit des données dans le répertoire privé de l'application.
     * Le stockage eMMC est chiffré au repos par PlugOS.
     */
    fun writeSecret(context: Context, filename: String, data: String) {
        try {
            // getFilesDir() pointe vers le sandbox chiffré de l'app
            val file = File(context.filesDir, filename)
            FileOutputStream(file).use { fos ->
                fos.write(data.toByteArray(StandardCharsets.UTF_8))
            }
            println("Données écrites avec succès dans le stockage chiffré.")
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    /**
     * Lit les données depuis le stockage chiffré.
     */
    fun readSecret(context: Context, filename: String): String? {
        val file = File(context.filesDir, filename)
        if (!file.exists()) return null

        return try {
            FileInputStream(file).bufferedReader().use { it.readText() }
        } catch (e: Exception) {
            e.printStackTrace()
            null
        }
    }
}

← Retour à la fiche