GRG_TMPFILE grg_tmpfile_gen (const GRG_CTX gctx) { GRG_TMPFILE tf; char tmpname[] = "/tmp/___-XXXXXX"; grg_crypt_algo ca; if (!gctx) return NULL; tf = (GRG_TMPFILE) malloc (sizeof (struct _grg_tmpfile)); if (!tf) return NULL; ca = grg_ctx_get_crypt_algo (gctx); memcpy (tmpname + 5, gctx->header, HEADER_LEN); tf->tmpfd = mkstemp (tmpname); unlink (tmpname); memcpy (tmpname, "/tmp/___-XXXXXX", 15); if (tf->tmpfd < 0) { free (tf); return NULL; } tf->crypt = mcrypt_module_open (grg2mcrypt (ca), NULL, MCRYPT_CFB, NULL); if (tf->crypt == MCRYPT_FAILED) { close (tf->tmpfd); free (tf); return NULL; } tf->dKey = grg_get_key_size_static (ca); tf->key = grg_rnd_seq (gctx, tf->dKey); if(!tf->key) { close (tf->tmpfd); free (tf); return NULL; } tf->dIV = grg_get_block_size_static (ca); tf->IV = grg_rnd_seq (gctx, tf->dIV); if(!tf->IV) { close (tf->tmpfd); free (tf); return NULL; } tf->rwmode = WRITEABLE; return tf; }
static void update_crypto_label (void) { gchar *lbltxt; guint key, block; block = grg_get_block_size_static (tmp_pref_crypto); key = grg_get_key_size_static (tmp_pref_crypto); lbltxt = g_strdup_printf (_(" Block size: %d bits"), block * 8); gtk_label_set_text (GTK_LABEL (crypto_block_lbl), lbltxt); g_free (lbltxt); lbltxt = g_strdup_printf (_(" Key length: %d bits"), key * 8); gtk_label_set_text (GTK_LABEL (crypto_key_lbl), lbltxt); g_free (lbltxt); }