Extra Systems

CYPHERNET

procedure per crittografare e decrittografare la chiave di sessione encrypt_local_key e decrypt_remote_key


Le procedure di crittografia e decrittografia della chiave di sessione encrypt_local_key e decrypt_remote_key vengono richiamate nel modulo get_common_key. Entrambe queste operazioni vengono eseguite in Extra Systems Cypher Net tramite la stessa funzione long_power_mod (esponenziazione), solo che utilizzano chiavi RSA diverse: la crittografia viene eseguita con la chiave privata e la decrittografia viene eseguita con la chiave pubblica del partner.

typedef struct session_key_item
{
	unsigned char packed[PACKED_VALUE_LENTH];
	unsigned char unpacked[VALUE_LENTH];
} SESSIONKEYITEM;

SESSIONKEYITEM local_key, remote_key, common_key;

unsigned char crypted_local_key[PACKED_VALUE_LENTH], crypted_remote_key[PACKED_VALUE_LENTH];

void encrypt_local_key(void)
{
	unsigned char crypted_value[VALUE_LENTH];
	long_power_mod(local_key.unpacked, encrypt_rsa_key.exponent, encrypt_rsa_key.modulus, crypted_value);
	pack_value(crypted_value, crypted_local_key);
}

void decrypt_remote_key(void)
{
	unsigned char crypted_value[VALUE_LENTH];
	unpack_value(crypted_remote_key, crypted_value);
	long_power_mod(crypted_value, decrypt_rsa_key.exponent, decrypt_rsa_key.modulus, remote_key.unpacked);
	pack_value(remote_key.unpacked, remote_key.packed);
}

L'algoritmo operativo delle procedure pack_value e unpack_value può essere trovato qui.

Il contenuto di questa pagina è disponibile anche in inglese, francese, tedesco, portoghese, spagnolo, ucraino e russo.


© Extra Systems, 2024 Extra Web Top