diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-06-13 05:20:42 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-06-13 05:20:42 +0200 |
commit | 80794b1ce64b394fe6a1355ddd7159d1c97d6f48 (patch) | |
tree | bdd1db9f6f3d6934e8a3862ee2116f42d99db27b | |
parent | 46f9d4960161284182b11240783f427816700ab1 (diff) |
Added salt to blowfish encryption.
-rw-r--r-- | runtime/doc/options.txt | 2 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 4 | ||||
-rw-r--r-- | runtime/tutor/tutor.eo | 14 | ||||
-rw-r--r-- | runtime/tutor/tutor.eo.utf-8 | 14 | ||||
-rw-r--r-- | runtime/tutor/tutor.fr | 22 | ||||
-rw-r--r-- | runtime/tutor/tutor.fr.utf-8 | 22 | ||||
-rw-r--r-- | src/blowfish.c | 42 | ||||
-rw-r--r-- | src/fileio.c | 68 | ||||
-rw-r--r-- | src/po/eo.po | 169 | ||||
-rw-r--r-- | src/po/fr.po | 164 | ||||
-rw-r--r-- | src/proto.h | 2 | ||||
-rw-r--r-- | src/proto/blowfish.pro | 2 | ||||
-rw-r--r-- | src/proto/sha256.pro | 4 | ||||
-rw-r--r-- | src/sha256.c | 50 | ||||
-rw-r--r-- | src/testdir/test71.in | 2 |
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 |