Les clés de chiffrement RSA sont stockées sur le disque sous forme compressée et après lecture (pour une utilisation ultérieure dans Extra Systems Cypher Net), elles sont décompressées élément par élément à l'aide de la procédure unpack_value.
typedef struct rsa_key_item { unsigned char exponent[VALUE_LENTH]; unsigned char modulus[VALUE_LENTH]; } RSAKEYITEM; typedef struct rsa_key_packed_item { unsigned char exponent[PACKED_VALUE_LENTH]; unsigned char modulus[PACKED_VALUE_LENTH]; } RSAKEYPACKEDITEM; RSAKEYITEM encrypt_rsa_key, decrypt_rsa_key; int load_rsa_keys(char *encrypt_rsa_key_file, char *decrypt_rsa_key_file) { int file_handle; RSAKEYPACKEDITEM packed_key_item; if((file_handle = open(encrypt_rsa_key_file, O_RDONLY)) == -1) return 0; read(file_handle, &packed_key_item, sizeof(packed_key_item)); close(file_handle); unpack_value(packed_key_item.exponent, encrypt_rsa_key.exponent); unpack_value(packed_key_item.modulus, encrypt_rsa_key.modulus); if((file_handle = open(decrypt_rsa_key_file, O_RDONLY)) == -1) return 0; read(file_handle, &packed_key_item, sizeof(packed_key_item)); close(file_handle); unpack_value(packed_key_item.exponent, decrypt_rsa_key.exponent); unpack_value(packed_key_item.modulus, decrypt_rsa_key.modulus); return 1; }
Les paramètres de cette procédure sont les noms des fichiers de clés RSA publiques (partenaire de communication) et privées (propres).
Le contenu de cette page est également disponible en anglais, allemand, ukrainien et en russe.
© Extra Systems, 2024 |