Ключі шифрування RSA зберігаються на диску в упакованому вигляді, після читання (для подальшого використання Extra Systems Cypher Net) поелементно розпаковуються процедурою 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;
}
Параметрами цієї процедури є імена файлів відкритого (партнера зв'язку) та закритого (свого власного) ключа RSA.
Контент цієї сторінки доступний також англійською, французькою, німецькою, португальською, іспанською, італійською та російською мовами.
| © Extra Systems, 2024 |
|