Lines Matching defs:fek

764 static unsigned ntfs_raw_fek_decrypt(u8 *fek, u32 fek_size,
773 ntfs_buffer_reverse(fek, fek_size);
775 err = gcry_mpi_scan(&fek_mpi, GCRYMPI_FMT_USG, fek, fek_size, NULL);
818 err = gcry_mpi_print(GCRYMPI_FMT_USG, fek, fek_size, &size, fek_mpi);
830 padding = strnlen((char *)fek, size) + 1;
837 memmove(fek, fek + padding, size);
890 static gcry_error_t ntfs_desx_decrypt(ntfs_fek *fek, u8 *outbuf,
895 ntfs_desx_ctx *ctx = &fek->desx_ctx;
899 err = gcry_cipher_encrypt(fek->gcry_cipher_hd, outbuf, 8, NULL, 0);
910 static gcry_error_t ntfs_desx_encrypt(ntfs_fek *fek, u8 *outbuf,
914 ntfs_desx_ctx *ctx = &fek->desx_ctx;
917 err = gcry_cipher_decrypt(fek->gcry_cipher_hd, outbuf, 8, NULL, 0);
1048 ntfs_fek *fek;
1062 fek = malloc(((((sizeof(*fek) + 7) & ~7) + key_size + 7) & ~7) +
1064 if (!fek) {
1068 ctx = &fek->desx_ctx;
1069 fek->alg_id = *(le32*)(fek_buf + 8);
1070 //ntfs_log_debug("alg_id 0x%x\n", le32_to_cpu(fek->alg_id));
1071 fek->key_data = (u8*)fek + ((sizeof(*fek) + 7) & ~7);
1072 memcpy(fek->key_data, fek_buf + 16, key_size);
1073 fek->des_gcry_cipher_hd_ptr = NULL;
1074 *(gcry_cipher_hd_t***)(fek->key_data + ((key_size + 7) & ~7)) =
1075 &fek->des_gcry_cipher_hd_ptr;
1076 switch (fek->alg_id) {
1096 if (fek->alg_id == CALG_DES)
1100 le32_to_cpu(fek->alg_id));
1116 err = gcry_cipher_open(&fek->gcry_cipher_hd, gcry_algo,
1125 if (fek->alg_id == CALG_DESX) {
1126 err = ntfs_desx_key_expand(fek->key_data, (u32*)ctx->des_key,
1129 err = gcry_cipher_setkey(fek->gcry_cipher_hd,
1132 err = gcry_cipher_setkey(fek->gcry_cipher_hd, fek->key_data,
1138 gcry_cipher_close(fek->gcry_cipher_hd);
1142 return fek;
1144 free(fek);
1152 static void ntfs_fek_release(ntfs_fek *fek)
1154 if (fek->des_gcry_cipher_hd_ptr)
1155 gcry_cipher_close(*fek->des_gcry_cipher_hd_ptr);
1156 gcry_cipher_close(fek->gcry_cipher_hd);
1157 free(fek);
1171 ntfs_fek *fek;
1217 fek = ntfs_fek_import_from_raw(fek_buf, fek_size);
1218 if (fek)
1219 return fek;
1238 ntfs_fek *fek = NULL;
1267 fek = ntfs_df_array_fek_get(df_array, rsa_key, thumbprint,
1270 return fek;
1276 static int ntfs_fek_decrypt_sector(ntfs_fek *fek, u8 *data, const u64 offset)
1280 err = gcry_cipher_reset(fek->gcry_cipher_hd);
1292 if (fek->alg_id == CALG_DESX) {
1295 fek->desx_ctx.prev_blk = 0;
1297 err = ntfs_desx_decrypt(fek, &data[k], &data[k]);
1300 err = gcry_cipher_decrypt(fek->gcry_cipher_hd, data, 512, NULL, 0);
1306 if (fek->alg_id == CALG_AES_256) {
1319 static int ntfs_fek_encrypt_sector(ntfs_fek *fek, u8 *data, const u64 offset)
1323 err = gcry_cipher_reset(fek->gcry_cipher_hd);
1336 if (fek->alg_id == CALG_AES_256) {
1343 if (fek->alg_id == CALG_DESX) {
1346 fek->desx_ctx.prev_blk = 0;
1348 err = ntfs_desx_encrypt(fek, &data[k], &data[k]);
1351 err = gcry_cipher_encrypt(fek->gcry_cipher_hd, data, 512, NULL, 0);
1363 * @fek: A file encryption key. As obtained by ntfs_inode_fek_get().
1365 static int ntfs_cat_decrypt(ntfs_inode *inode, ntfs_fek *fek)
1402 if ((i = ntfs_fek_decrypt_sector(fek, buffer, offset)) <
1432 * @fek: A file encryption key. As obtained by ntfs_inode_fek_get().
1434 static int ntfs_feed_encrypt(ntfs_inode *inode, ntfs_fek *fek)
1501 if ((i = ntfs_fek_encrypt_sector(fek, buffer, offset))
1544 ntfs_fek *fek;
1612 fek = ntfs_inode_fek_get(inode, rsa_key, thumbprint,
1615 if (fek) {
1617 res = ntfs_feed_encrypt(inode, fek);
1619 res = ntfs_cat_decrypt(inode, fek);
1620 ntfs_fek_release(fek);