Non sei sicuro di quale sia il tuo caso d'uso. Se stai solo crittografando un file in modo che il tuo partner possa leggerlo e nessun altro e non si preoccupi dell'autenticazione, replay o MitM e sei completamente sicuro del processo che tu e il tuo partner utilizzate per scambiare le chiavi pubbliche , quindi puoi utilizzare una procedura molto semplice.
-
Genera una chiave simmetrica utilizzando un algoritmo di tua preferenza.
- Cripta il file con la chiave simmetrica
- Cripta la chiave simmetrica con la chiave pubblica del destinatario
- Invia 2 e 3 al tuo partner.
Non sono sicuro del motivo per cui desideri includere la tua chiave privata nel processo. Finché il ricevitore può decrittografare la chiave (e lui può, perché hai usato la sua chiave pubblica), il segreto è già "condiviso" perché lo hai generato in modo che tu lo sappia ovviamente.
L'unica cosa che posso pensare è che tu voglia che il ricevitore sia certo che il file provenga da te e da nessun altro. In tal caso, suppongo che potresti
- Prendi un hash di tutto il casino
- Cripta l'hash con la tua chiave privata
- Invia il risultato di 6 insieme a 2 e 3
... assumendo che il ricevitore abbia modo di essere sicuro di avere una copia corretta della chiave pubblica (che non è necessariamente banale).
Se non sei completamente sicuro del processo che tu e il tuo partner utilizzate per scambiare le chiavi pubbliche, dovrete sfruttare un'infrastruttura PKI o passare a uno schema più semplice come un segreto condiviso con scambio fuori banda.