summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-06-13 05:20:42 +0200
committerBram Moolenaar <Bram@vim.org>2010-06-13 05:20:42 +0200
commit80794b1ce64b394fe6a1355ddd7159d1c97d6f48 (patch)
treebdd1db9f6f3d6934e8a3862ee2116f42d99db27b
parent46f9d4960161284182b11240783f427816700ab1 (diff)
Added salt to blowfish encryption.
-rw-r--r--runtime/doc/options.txt2
-rw-r--r--runtime/doc/todo.txt4
-rw-r--r--runtime/tutor/tutor.eo14
-rw-r--r--runtime/tutor/tutor.eo.utf-814
-rw-r--r--runtime/tutor/tutor.fr22
-rw-r--r--runtime/tutor/tutor.fr.utf-822
-rw-r--r--src/blowfish.c42
-rw-r--r--src/fileio.c68
-rw-r--r--src/po/eo.po169
-rw-r--r--src/po/fr.po164
-rw-r--r--src/proto.h2
-rw-r--r--src/proto/blowfish.pro2
-rw-r--r--src/proto/sha256.pro4
-rw-r--r--src/sha256.c50
-rw-r--r--src/testdir/test71.in2
15 files changed, 425 insertions, 156 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index c021edfc47..e63bcdb73c 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -7363,7 +7363,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When not empty all messages are written in a file with this name.
When the file exists messages are appended.
Writing to the file ends when Vim exits or when 'verbosefile' is made
- empty.
+ empty. Writes are buffered, thus may not show up for some time.
Setting 'verbosefile' to a new value is like making it empty first.
The difference with |:redir| is that verbose messages are not
displayed when 'verbosefile' is set.
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 605c3cbe1e..f898c0297b 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -30,9 +30,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
-gtk_selection_clear_targets not available in GTK1 (Patrick Texier)
-Use #ifdefs to use old code for GTK1.
-
Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
E315 when trying to change a file in FileChangedRO autocommand event.
@@ -1088,7 +1085,6 @@ restored. (Luc St-Louis)
Vim 7.3:
-- crash when reloading file. (Namsh, 2010 Jun 11)
- using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu.
Use register_shell_extension()? (George Reilly, 2010 May 26)
Ron's version: http://dev.ronware.org/p/vim/finfo?name=gvim.nsi
diff --git a/runtime/tutor/tutor.eo b/runtime/tutor/tutor.eo
index 2ac06893c0..958d393d2e 100644
--- a/runtime/tutor/tutor.eo
+++ b/runtime/tutor/tutor.eo
@@ -1,5 +1,5 @@
==============================================================================
-= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 =
+= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.3 =
==============================================================================
Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
@@ -149,6 +149,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
!! RIMARKO: Antaý ol plenumi iun suban paþon ajn, legu la tutan lecionon!!
1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q!
+ Aý, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie.
2. Æe la þelinvito, tajpu æi tiun komandon: vim tutor <Enenklavo>
'vim' estas la komando por lanæi la redaktilon Vim, 'tutor' estas la
@@ -159,7 +160,8 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
4. Konservu la dosieron kun þanøoj kaj eliru el Vim per: :wq <Enenklavo>
- 5. Relanæu la instruilon vimtutor kaj moviøu suben al la sekvanta resumo.
+ 5. Se vi eliris la instruilon vimtutor en paþo 1, restartu la intruilon
+ vimtutor kaj moviøu suben al la sekvanta resumo.
6. Post kiam vi legis la suprajn paþojn, kaj komprenis ilin: faru ilin.
@@ -413,7 +415,7 @@ RIMARKO: Premo de nur la movo en Normala reøimo sen operatoro movos
5. Nun moviøu al la leciono 3.3.
-Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
+RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -908,7 +910,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu seræa komando, uzu \c
** Ebligu kapablojn de Vim **
Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaýlte
- malþaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc.
+ malþaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc".
1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo:
:e ~/.vimrc por Unikso
@@ -969,7 +971,7 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tio konkludas la instruilon de Vim. Øi celis doni mallongan superrigardon
- de la redaktilo Vim, nur tio kio sufiæas por ebligi al vi facilan uzon de
+ de la redaktilo Vim, nur tion kio sufiæas por ebligi al vi facilan uzon de
la redaktilo. Estas nepre nekompleta, æar Vim havas multajn multajn pliajn
komandojn. Legu la manlibron: ":help user-manual".
@@ -984,6 +986,6 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
Tradukita en Esperanto de Dominique Pellé, 2008-04-01
Retpoþto: dominique.pelle@gmail.com
- Lasta þanøo: 2009-02-01
+ Lasta þanøo: 2010-05-23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/runtime/tutor/tutor.eo.utf-8 b/runtime/tutor/tutor.eo.utf-8
index 5adad3913e..febf2f983e 100644
--- a/runtime/tutor/tutor.eo.utf-8
+++ b/runtime/tutor/tutor.eo.utf-8
@@ -1,5 +1,5 @@
==============================================================================
-= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.2 =
+= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.7.eo.3 =
==============================================================================
Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
@@ -149,6 +149,7 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
!! RIMARKO: AntaÅ­ ol plenumi iun suban paÅon ajn, legu la tutan lecionon!!
1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q!
+ AÅ­, se vi havas atingon al alia terminalo, faru tion, kio sekvas tie.
2. Ĉe la Åelinvito, tajpu ĉi tiun komandon: vim tutor <Enenklavo>
'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la
@@ -159,7 +160,8 @@ RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
4. Konservu la dosieron kun ÅanÄoj kaj eliru el Vim per: :wq <Enenklavo>
- 5. Relanĉu la instruilon vimtutor kaj moviÄu suben al la sekvanta resumo.
+ 5. Se vi eliris la instruilon vimtutor en paÅo 1, restartu la intruilon
+ vimtutor kaj moviÄu suben al la sekvanta resumo.
6. Post kiam vi legis la suprajn paÅojn, kaj komprenis ilin: faru ilin.
@@ -413,7 +415,7 @@ RIMARKO: Premo de nur la movo en Normala reÄimo sen operatoro movos
5. Nun moviÄu al la leciono 3.3.
-Rimarko: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
+RIMARKO: Memoru, ke vi devus lerni per uzo, kaj ne per memorado.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -908,7 +910,7 @@ RIMARKO: Se vi deziras ignori usklecon por nur unu serĉa komando, uzu \c
** Ebligu kapablojn de Vim **
Vim havas multe pli da kapabloj ol Vi, sed la plej multaj estas defaÅ­lte
- malÅaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc.
+ malÅaltitaj. Por ekuzi la kapablojn, vi devas krei dosieron "vimrc".
1. Ekredaktu la dosieron "vimrc". Tio dependas de via sistemo:
:e ~/.vimrc por Unikso
@@ -969,7 +971,7 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tio konkludas la instruilon de Vim. Äœi celis doni mallongan superrigardon
- de la redaktilo Vim, nur tio kio sufiĉas por ebligi al vi facilan uzon de
+ de la redaktilo Vim, nur tion kio sufiĉas por ebligi al vi facilan uzon de
la redaktilo. Estas nepre nekompleta, ĉar Vim havas multajn multajn pliajn
komandojn. Legu la manlibron: ":help user-manual".
@@ -984,6 +986,6 @@ RIMARKO: Kompletigo funkcias por multaj komandoj. Nur provu premi CTRL-D kaj
Tradukita en Esperanto de Dominique Pellé, 2008-04-01
RetpoÅto: dominique.pelle@gmail.com
- Lasta ÅanÄo: 2009-02-01
+ Lasta ÅanÄo: 2010-05-23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/runtime/tutor/tutor.fr b/runtime/tutor/tutor.fr
index e321754576..abb53d18f7 100644
--- a/runtime/tutor/tutor.fr
+++ b/runtime/tutor/tutor.fr
@@ -1,5 +1,5 @@
===============================================================================
-= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.1 =
+= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 =
===============================================================================
Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisant
4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
1 à 3 pour sortir puis rentrer dans l'éditeur.
-NOTE : :q! <Entrée> annule tous le changements que vous avez fait. Dans
+NOTE : :q! <Entrée> annule tous les changements que vous avez fait. Dans
quelques leçons, vous apprendrez à enregistrer les changements.
5. Déplacez le curseur à la Leçon 1.3.
@@ -401,7 +401,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim.
- 3. Déplacez le curseur sur la ligne c) au dessus où vous voulez remettre la
+ 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la
ligne effacée.
4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur.
@@ -486,7 +486,7 @@ Notez que ce efface le mot et vous place ensuite en mode Insertion.
---> La fin de cette ligne doit être rendue identique à la seconde.
---> La fin de cette ligne doit être corrigée avec la commande c$ .
-NOTE : Vous pouvez utilisez la touche Retour Arrière pour corriger les
+NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les
erreurs lorsque vous tapez.
@@ -722,14 +722,14 @@ NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le
** Pour insérer le contenu d'un fichier, tapez :r FICHIER **
- 1. Placez le curseur juste au dessus de cette ligne.
+ 1. Placez le curseur juste au-dessus de cette ligne.
NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST
où TEST est le nom de votre fichier.
- Le fichier que vous récupérez est placé au dessous de la ligne du curseur.
+ Le fichier que vous récupérez est placé au-dessous de la ligne du curseur.
4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez
qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle
@@ -779,7 +779,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion.
- 4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un O
+ 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O
majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne
ci-dessous.
@@ -849,7 +849,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
3. Tapez y pour copier le texte en surbrillance.
- 4. Déplacez la curseur à la fin de la ligne suivante : j$
+ 4. Déplacez le curseur à la fin de la ligne suivante : j$
5. Tapez p pour coller le texte. Puis tapez : un second <Échap> .
@@ -893,7 +893,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion.
- Taper O ouvre une ligne au DESSUS du curseur.
+ Taper O ouvre une ligne au-DESSUS du curseur.
2. Taper a pour insérer du texte APRÈS le curseur.
Taper A pour insérer du texte après la fin de ligne.
@@ -985,7 +985,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
7 Appuyez <TAB>. Vim va compléter le nom (s'il est unique).
-NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez
+NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help .
@@ -1034,5 +1034,5 @@ NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez
Dernières mises à jour par Dominique Pellé.
E-mail : dominique.pelle@gmail.com
- Last Change : 2008 Nov 23
+ Last Change : 2010 May 23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/runtime/tutor/tutor.fr.utf-8 b/runtime/tutor/tutor.fr.utf-8
index 1b015105d9..24d8bfa00f 100644
--- a/runtime/tutor/tutor.fr.utf-8
+++ b/runtime/tutor/tutor.fr.utf-8
@@ -1,5 +1,5 @@
===============================================================================
-= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.1 =
+= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 =
===============================================================================
Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisan
4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
1 à 3 pour sortir puis rentrer dans l'éditeur.
-NOTE : :q! <Entrée> annule tous le changements que vous avez fait. Dans
+NOTE : :q! <Entrée> annule tous les changements que vous avez fait. Dans
quelques leçons, vous apprendrez à enregistrer les changements.
5. Déplacez le curseur à la Leçon 1.3.
@@ -401,7 +401,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
2. Tapez dd pour effacer la ligne et la placer dans un registre de Vim.
- 3. Déplacez le curseur sur la ligne c) au dessus où vous voulez remettre la
+ 3. Déplacez le curseur sur la ligne c) au-dessus où vous voulez remettre la
ligne effacée.
4. En mode Normal, tapez p pour remettre la ligne en dessous du curseur.
@@ -486,7 +486,7 @@ Notez que ce efface le mot et vous place ensuite en mode Insertion.
---> La fin de cette ligne doit être rendue identique à la seconde.
---> La fin de cette ligne doit être corrigée avec la commande c$ .
-NOTE : Vous pouvez utilisez la touche Retour Arrière pour corriger les
+NOTE : Vous pouvez utiliser la touche Retour Arrière pour corriger les
erreurs lorsque vous tapez.
@@ -722,14 +722,14 @@ NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le
** Pour insérer le contenu d'un fichier, tapez :r FICHIER **
- 1. Placez le curseur juste au dessus de cette ligne.
+ 1. Placez le curseur juste au-dessus de cette ligne.
NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST
où TEST est le nom de votre fichier.
- Le fichier que vous récupérez est placé au dessous de la ligne du curseur.
+ Le fichier que vous récupérez est placé au-dessous de la ligne du curseur.
4. Pour vérifier que le fichier a bien été inséré, remontez et vérifiez
qu'il y a maintenant deux copies de la Leçon 5.3, l'originale et celle
@@ -779,7 +779,7 @@ NOTE : Vous pouvez aussi lire la sortie d'une commande externe. Par exemple,
---> En tapant o le curseur se met sur la ligne ouverte, en mode Insertion.
- 4. Pour ouvrir une ligne au DESSUS du curseur, tapez simplement un O
+ 4. Pour ouvrir une ligne au-DESSUS du curseur, tapez simplement un O
majuscule, plutôt qu'un o minuscule. Faites un essai sur la ligne
ci-dessous.
@@ -849,7 +849,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
3. Tapez y pour copier le texte en surbrillance.
- 4. Déplacez la curseur à la fin de la ligne suivante : j$
+ 4. Déplacez le curseur à la fin de la ligne suivante : j$
5. Tapez p pour coller le texte. Puis tapez : un second <Échap> .
@@ -893,7 +893,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
1. Taper o ouvre une ligne SOUS le curseur et démarre le mode Insertion.
- Taper O ouvre une ligne au DESSUS du curseur.
+ Taper O ouvre une ligne au-DESSUS du curseur.
2. Taper a pour insérer du texte APRÈS le curseur.
Taper A pour insérer du texte après la fin de ligne.
@@ -985,7 +985,7 @@ NOTE : Si vous voulez ignorer la casse uniquement pour une recherche, utilisez
7 Appuyez <TAB>. Vim va compléter le nom (s'il est unique).
-NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez
+NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
d'appuyer CTRL-D et <TAB>. C'est utile en particulier pour :help .
@@ -1034,5 +1034,5 @@ NOTE : Le complètement fonctionne pour de nombreuse commandes. Essayez
Dernières mises à jour par Dominique Pellé.
E-mail : dominique.pelle@gmail.com
- Last Change : 2008 Nov 23
+ Last Change : 2010 May 23
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/blowfish.c b/src/blowfish.c
index d47f463056..f0b97b7b90 100644
--- a/src/blowfish.c
+++ b/src/blowfish.c
@@ -402,22 +402,40 @@ bf_d_cblock(block)
}
#endif
+/*
+ * Initialize the crypt method using "password" as the encryption key and
+ * "salt[salt_len]" as the salt.
+ */
void
-bf_key_init(password)
+bf_key_init(password, salt, salt_len)
char_u *password;
+ char_u *salt;
+ int salt_len;
{
int i, j, keypos = 0;
UINT32_T val, data_l, data_r;
char_u *key;
int keylen;
- key = sha256_key(password);
- keylen = (int)STRLEN(key);
+ /* Process the key 1000 times.
+ * See http://en.wikipedia.org/wiki/Key_strengthening. */
+ key = sha256_key(password, salt, salt_len);
+ for (i = 0; i < 1000; i++)
+ key = sha256_key(key, salt, salt_len);
+
+ /* Convert the key from 64 hex chars to 32 binary chars. */
+ keylen = (int)STRLEN(key) / 2;
if (keylen == 0)
{
EMSG(_("E831: bf_key_init() called with empty password"));
return;
}
+ for (i = 0; i < keylen; i++)
+ {
+ sscanf((char *)&key[i * 2], "%2x", &j);
+ key[i] = j;
+ }
+
for (i = 0; i < 256; ++i)
{
sbx[0][i] = sbi[0][i];
@@ -475,9 +493,10 @@ bf_check_tables(ipa, sbi, val)
typedef struct {
char_u password[64];
- char_u plaintxt[8];
- char_u cryptxt[8];
- char_u badcryptxt[8]; /* cryptxt when big/little endian is wrong */
+ char_u salt[9];
+ char_u plaintxt[9];
+ char_u cryptxt[9];
+ char_u badcryptxt[9]; /* cryptxt when big/little endian is wrong */
UINT32_T keysum;
} struct_bf_test_data;
@@ -488,10 +507,11 @@ typedef struct {
static struct_bf_test_data bf_test_data[] = {
{
"password",
+ "salt",
"plaintxt",
- "\x55\xca\x56\x3a\xef\xe1\x9c\x73", /* cryptxt */
- "\x47\xd9\x67\x49\x91\xc5\x9a\x95", /* badcryptxt */
- 0x5de01bdbu, /* keysum */
+ "\xad\x3d\xfa\x7f\xe8\xea\x40\xf6", /* cryptxt */
+ "\x72\x50\x3b\x38\x10\x60\x22\xa7", /* badcryptxt */
+ 0x56701b5du /* keysum */
},
};
@@ -519,7 +539,9 @@ bf_self_test()
bn = ARRAY_LENGTH(bf_test_data);
for (i = 0; i < bn; i++)
{
- bf_key_init((char_u *)(bf_test_data[i].password));
+ bf_key_init((char_u *)(bf_test_data[i].password),
+ bf_test_data[i].salt,
+ (int)STRLEN(bf_test_data[i].salt));
if (!bf_check_tables(pax, sbx, bf_test_data[i].keysum))
err++;
diff --git a/src/fileio.c b/src/fileio.c
index bc629f39e6..bfc11d0d95 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -37,7 +37,12 @@
static char *crypt_magic[] = {"VimCrypt~01!", "VimCrypt~02!"};
static char crypt_magic_head[] = "VimCrypt~";
# define CRYPT_MAGIC_LEN 12 /* must be multiple of 4! */
+
+/* For blowfish, after the magic header, we store 8 bytes of salt and then 8
+ * bytes of seed (initialisation vector). */
+static int crypt_salt_len[] = {0, 8};
static int crypt_seed_len[] = {0, 8};
+#define CRYPT_SALT_LEN_MAX 8
#define CRYPT_SEED_LEN_MAX 8
#endif
@@ -1441,6 +1446,7 @@ retry:
if ((filesize == 0
# ifdef FEAT_CRYPT
|| (filesize == (CRYPT_MAGIC_LEN
+ + crypt_salt_len[use_crypt_method]
+ crypt_seed_len[use_crypt_method])
&& cryptkey != NULL)
# endif
@@ -2488,7 +2494,9 @@ failed:
#ifdef FEAT_CRYPT
if (cryptkey != NULL)
msg_add_lines(c, (long)linecnt, filesize
- - CRYPT_MAGIC_LEN - crypt_seed_len[use_crypt_method]);
+ - CRYPT_MAGIC_LEN
+ - crypt_salt_len[use_crypt_method]
+ - crypt_seed_len[use_crypt_method]);
else
#endif
msg_add_lines(c, (long)linecnt, filesize);
@@ -2841,7 +2849,7 @@ get_crypt_method(ptr, len)
for (i = 0; i < (int)(sizeof(crypt_magic) / sizeof(crypt_magic[0])); i++)
{
- if (len < (CRYPT_MAGIC_LEN + crypt_seed_len[i]))
+ if (len < (CRYPT_MAGIC_LEN + crypt_salt_len[i] + crypt_seed_len[i]))
continue;
if (memcmp(ptr, crypt_magic[i], CRYPT_MAGIC_LEN) == 0)
return i;
@@ -2903,19 +2911,20 @@ check_for_cryptkey(cryptkey, ptr, sizep, filesizep, newfile, did_ask)
if (cryptkey != NULL)
{
int seed_len = crypt_seed_len[method];
+ int salt_len = crypt_salt_len[method];
if (method == 0)
crypt_init_keys(cryptkey);
else
{
- bf_key_init(cryptkey);
- bf_ofb_init(ptr + CRYPT_MAGIC_LEN, seed_len);
+ bf_key_init(cryptkey, ptr + CRYPT_MAGIC_LEN, salt_len);
+ bf_ofb_init(ptr + CRYPT_MAGIC_LEN + salt_len, seed_len);
}
/* Remove magic number from the text */
- *filesizep += CRYPT_MAGIC_LEN + seed_len;
- *sizep -= CRYPT_MAGIC_LEN + seed_len;
- mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + seed_len, (size_t)*sizep);
+ *filesizep += CRYPT_MAGIC_LEN + salt_len + seed_len;
+ *sizep -= CRYPT_MAGIC_LEN + salt_len + seed_len;
+ mch_memmove(ptr, ptr + CRYPT_MAGIC_LEN + salt_len + seed_len, (size_t)*sizep);
}
}
/* When starting to edit a new file which does not have encryption, clear
@@ -2935,12 +2944,15 @@ prepare_crypt_read(fp)
FILE *fp;
{
int method;
- char_u buffer[CRYPT_MAGIC_LEN + CRYPT_SEED_LEN_MAX + 2];
+ char_u buffer[CRYPT_MAGIC_LEN + CRYPT_SALT_LEN_MAX
+ + CRYPT_SEED_LEN_MAX + 2];
if (fread(buffer, CRYPT_MAGIC_LEN, 1, fp) != 1)
return FAIL;
method = get_crypt_method((char *)buffer,
- CRYPT_MAGIC_LEN + CRYPT_SEED_LEN_MAX);
+ CRYPT_MAGIC_LEN +
+ CRYPT_SEED_LEN_MAX +
+ CRYPT_SALT_LEN_MAX);
if (method < 0 || method != curbuf->b_p_cm)
return FAIL;
@@ -2948,12 +2960,13 @@ prepare_crypt_read(fp)
crypt_init_keys(curbuf->b_p_key);
else
{
+ int salt_len = crypt_salt_len[method];
int seed_len = crypt_seed_len[method];
- if (fread(buffer, seed_len, 1, fp) != 1)
+ if (fread(buffer, salt_len + seed_len, 1, fp) != 1)
return FAIL;
- bf_key_init(curbuf->b_p_key);
- bf_ofb_init(buffer, seed_len);
+ bf_key_init(curbuf->b_p_key, buffer, salt_len);
+ bf_ofb_init(buffer + salt_len, seed_len);
}
return OK;
}
@@ -2969,8 +2982,12 @@ prepare_crypt_write(buf, lenp)
{
char_u *header;
int seed_len = crypt_seed_len[buf->b_p_cm];
+ int salt_len = crypt_salt_len[buf->b_p_cm];
+ char_u *salt;
+ char_u *seed;
- header = alloc_clear(CRYPT_MAGIC_LEN + CRYPT_SEED_LEN_MAX + 2);
+ header = alloc_clear(CRYPT_MAGIC_LEN + CRYPT_SALT_LEN_MAX
+ + CRYPT_SEED_LEN_MAX + 2);
if (header != NULL)
{
use_crypt_method = buf->b_p_cm; /* select pkzip or blowfish */
@@ -2980,27 +2997,32 @@ prepare_crypt_write(buf, lenp)
crypt_init_keys(buf->b_p_key);
else
{
- /* Using blowfish, add seed. */
- sha2_seed(header + CRYPT_MAGIC_LEN, seed_len); /* create iv */
- bf_ofb_init(header + CRYPT_MAGIC_LEN, seed_len);
- bf_key_init(buf->b_p_key);
+ /* Using blowfish, add salt and seed. */
+ salt = header + CRYPT_MAGIC_LEN;
+ seed = salt + salt_len;
+ sha2_seed(salt, salt_len, seed, seed_len);
+ bf_key_init(buf->b_p_key, salt, salt_len);
+ bf_ofb_init(seed, seed_len);
}
}
- *lenp = CRYPT_MAGIC_LEN + seed_len;
+ *lenp = CRYPT_MAGIC_LEN + salt_len + seed_len;
return header;
}
+#endif /* FEAT_CRYPT */
+
/*
* Like fwrite() but crypt the bytes when 'key' is set.
* Returns 1 if successful.
*/
size_t
fwrite_crypt(buf, ptr, len, fp)
- buf_T *buf;
+ buf_T *buf UNUSED;
char_u *ptr;
size_t len;
FILE *fp;
{
+#ifdef FEAT_CRYPT
char_u *copy;
char_u small_buf[100];
size_t i;
@@ -3020,6 +3042,9 @@ fwrite_crypt(buf, ptr, len, fp)
if (copy != small_buf)
vim_free(copy);
return i;
+#else
+ return fwrite(ptr, len, (size_t)1, fp);
+#endif
}
/*
@@ -3028,19 +3053,20 @@ fwrite_crypt(buf, ptr, len, fp)
*/
char_u *
read_string_decrypt(buf, fd, len)
- buf_T *buf;
+ buf_T *buf UNUSED;
FILE *fd;
int len;
{
char_u *ptr;
ptr = read_string(fd, len);
+#ifdef FEAT_CRYPT
if (ptr != NULL || *buf->b_p_key != NUL)
crypt_decode(ptr, len);
+#endif
return ptr;
}
-#endif /* FEAT_CRYPT */
#ifdef UNIX
static void
diff --git a/src/po/eo.po b/src/po/eo.po
index 7ea2e69dd4..23543ebda9 100644
--- a/src/po/eo.po
+++ b/src/po/eo.po
@@ -23,14 +23,29 @@ msgid ""
msgstr ""
"Project-Id-Version: Vim(Esperanto)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-16 21:54+0100\n"
-"PO-Revision-Date: 2010-02-16 21:56+0100\n"
+"POT-Creation-Date: 2010-06-12 07:15+0200\n"
+"PO-Revision-Date: 2010-06-12 08:24+0200\n"
"Last-Translator: Dominique PELLÉ <dominique.pelle@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "E831: bf_key_init() called with empty password"
+msgstr "E831: bf_key_init() alvokita kun malplena pasvorto"
+
+msgid "E820: sizeof(uint32_t) != 4"
+msgstr "E820: sizeof(uint32_t) != 4"
+
+msgid "E817: Blowfish big/little endian use wrong"
+msgstr "E817: Misuzo de pezkomenca/pezfina en blowfish"
+
+msgid "E818: sha256 test failed"
+msgstr "E818: Testo de sha256 fiaskis"
+
+msgid "E819: Blowfish test failed"
+msgstr "E819: Testo de blowfish fiaskis"
+
msgid "E82: Cannot allocate any buffer, exiting..."
msgstr "E82: Ne eblas disponigi iun ajn bufron, nun eliras..."
@@ -749,7 +764,6 @@ msgstr "daÅ­rigas en %s"
msgid "E133: :return not inside a function"
msgstr "E133: \":return\" ekster funkcio"
-#, c-format
msgid ""
"\n"
"# global variables:\n"
@@ -1039,7 +1053,7 @@ msgid " (NOT FOUND)"
msgstr " (NETROVITA)"
msgid " (not supported)"
-msgstr " (nesubtenita)"
+msgstr " (nesubtenata)"
msgid "[Deleted]"
msgstr "[ForviÅita]"
@@ -1070,8 +1084,8 @@ msgstr "Neniu kontrolpunkto estas difinita"
msgid "%3d %s %s line %ld"
msgstr "%3d %s %s linio %ld"
-msgid "E750: First use :profile start <fname>"
-msgstr "E750: Uzu unue \":profile start <dosiernomo>\""
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: Uzu unue \":profile start {dosiernomo}\""
#, c-format
msgid "Save changes to \"%s\"?"
@@ -1097,10 +1111,6 @@ msgid "E165: Cannot go beyond last file"
msgstr "E165: Ne eblas iri preter la lastan dosieron"
#, c-format
-msgid "E666: compiler not supported: %s"
-msgstr "E666: kompililo nesubtenita: %s"
-
-#, c-format
msgid "Searching for \"%s\" in \"%s\""
msgstr "Serĉado de \"%s\" en \"%s\""
@@ -1279,6 +1289,9 @@ msgstr ""
msgid "E467: Custom completion requires a function argument"
msgstr "E467: Uzula kompletigo bezonas funkcian argumenton"
+msgid "unknown"
+msgstr "nekonata"
+
#, c-format
msgid "E185: Cannot find color scheme %s"
msgstr "E185: Ne eblas trovi agordaron de koloroj %s"
@@ -1645,6 +1658,9 @@ msgstr "Konverto kun 'charconvert' fiaskis"
msgid "can't read output of 'charconvert'"
msgstr "ne eblas legi la eligon de 'charconvert'"
+msgid "E821: File is encrypted with unknown method"
+msgstr "E821: Dosiero estas ĉifrata per nekonata metodo"
+
msgid "E676: No matching autocommands for acwrite buffer"
msgstr "E676: Neniu kongrua aÅ­tokomando por la bufro acwrite"
@@ -1793,6 +1809,10 @@ msgid "1 character"
msgstr "1 signo"
#, c-format
+msgid "%lld characters"
+msgstr "%lld signoj"
+
+#, c-format
msgid "%ld characters"
msgstr "%ld signoj"
@@ -2169,7 +2189,7 @@ msgstr "E671: Ne eblas trovi titolon de fenestro \"%s\""
#, c-format
msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
-msgstr "E243: Ne subtenita argumento: \"-%s\"; Uzu la version OLE."
+msgstr "E243: Ne subtenata argumento: \"-%s\"; Uzu la version OLE."
msgid "E672: Unable to open window inside MDI application"
msgstr "E672: Ne eblas malfermi fenestron interne de aplikaĵo MDI"
@@ -2321,7 +2341,7 @@ msgstr "E618: \"%s\" ne estas dosiero de PostSkripta rimedo"
#, c-format
msgid "E619: file \"%s\" is not a supported PostScript resource file"
-msgstr "E619: \"%s\" ne estas subtenita dosiero de PostSkripta rimedo"
+msgstr "E619: \"%s\" ne estas subtenata dosiero de PostSkripta rimedo"
#, c-format
msgid "E621: \"%s\" resource file has wrong version"
@@ -2442,13 +2462,13 @@ msgid "E567: no cscope connections"
msgstr "E567: neniu konekto al cscope"
#, c-format
-msgid "E259: no matches found for cscope query %s of %s"
-msgstr "E259: neniu kongruo trovita por serĉo per cscope %s de %s"
-
-#, c-format
msgid "E469: invalid cscopequickfix flag %c for %c"
msgstr "E469: nevalida flago cscopequickfix %c de %c"
+#, c-format
+msgid "E259: no matches found for cscope query %s of %s"
+msgstr "E259: neniu kongruo trovita por serĉo per cscope %s de %s"
+
msgid "cscope commands:\n"
msgstr "komandoj de cscope:\n"
@@ -2880,6 +2900,9 @@ msgstr "Nevalida argumento por"
msgid "%d files to edit\n"
msgstr "%d redaktendaj dosieroj\n"
+msgid "netbeans is not supported with this GUI\n"
+msgstr "netbeans ne estas subtenata kun tiu grafika interfaco\n"
+
msgid "This Vim was not compiled with the diff feature."
msgstr "Tiu Vim ne estis kompilita kun la kompara eblo."
@@ -2971,7 +2994,7 @@ msgid "--\t\t\tOnly file names after this"
msgstr "--\t\t\tNur dosiernomoj malantaÅ­ tio"
msgid "--literal\t\tDon't expand wildcards"
-msgstr "--literal\t\tNe ekspansii ĵokerojn"
+msgstr "--literal\t\tNe malvolvi ĵokerojn"
msgid "-register\t\tRegister this gvim for OLE"
msgstr "-register\t\tRegistri tiun gvim al OLE"
@@ -3397,7 +3420,7 @@ msgid "E296: Seek error in swap file write"
msgstr "E296: Eraro de enpoziciigo dum skribo de permutodosiero .swp"
msgid "E297: Write error in swap file"
-msgstr "E297: Eraro de skribo en permutodosiero .swp"
+msgstr "E297: Skriberaro en permutodosiero .swp"
msgid "E300: Swap file already exists (symlink attack?)"
msgstr "E300: Permutodosiero .swp jam ekzistas (ĉu atako per simbola ligilo?)"
@@ -3537,14 +3560,20 @@ msgstr ""
"\n"
"(Indas konservi tiun dosieron per alia nomo\n"
-msgid "and run diff with the original file to check for changes)\n"
-msgstr "kaj lanĉi diff kun la originala dosiero por kontroli la ÅanÄojn)\n"
+msgid "and run diff with the original file to check for changes)"
+msgstr "kaj lanĉi diff kun la originala dosiero por kontroli la ÅanÄojn)"
+
+msgid "Recovery completed. Buffer contents equals file contents."
+msgstr ""
+"RestaÅ­ro finiÄis. La enhavo de la bufro samas kun la enhavo de la dosiero."
msgid ""
-"Delete the .swp file afterwards.\n"
+"\n"
+"You may want to delete the .swp file now.\n"
"\n"
msgstr ""
-"Poste forviÅi la permutodosieron .swp.\n"
+"\n"
+"La dosiero .swp nun forviÅindas.\n"
"\n"
#. use msg() to start the scrolling properly
@@ -4074,6 +4103,9 @@ msgstr "lego el kontaktoskatolo de Netbeans"
msgid "E658: NetBeans connection lost for buffer %ld"
msgstr "E658: Konekto de NetBeans perdita por bufro %ld"
+msgid "E511: netbeans already connected"
+msgstr "E511: nebeans jam konektata"
+
msgid "E505: "
msgstr "E505: "
@@ -4236,7 +4268,7 @@ msgid "E518: Unknown option"
msgstr "E518: Nekonata opcio"
msgid "E519: Option not supported"
-msgstr "E519: Opcio ne subtenita"
+msgstr "E519: Opcio ne subtenata"
msgid "E520: Not allowed in a modeline"
msgstr "E520: Ne permesita en reÄimlinio"
@@ -4312,7 +4344,7 @@ msgid "E537: 'commentstring' must be empty or contain %s"
msgstr "E537: 'commentstring' devas esti malplena aÅ­ enhavi %s"
msgid "E538: No mouse support"
-msgstr "E538: Neniu muso subtenita"
+msgstr "E538: Neniu muso subtenata"
msgid "E540: Unclosed expression sequence"
msgstr "E540: '}' mankas"
@@ -4637,7 +4669,7 @@ msgstr "E374: Mankas ] en formata ĉeno"
#, c-format
msgid "E375: Unsupported