mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	Minor updates to blowfish encryption.
This commit is contained in:
		| @@ -30,17 +30,15 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|. | ||||
| 							*known-bugs* | ||||
| -------------------- Known bugs and current work ----------------------- | ||||
|  | ||||
| check blowfish.c | ||||
| check sha256.c | ||||
| Use 'cm' option only when FEAT_CRYPT is defined. | ||||
| When not full match with magic, check for head and give warning about | ||||
| unsupported crypt method. | ||||
| if 'enc' is ucs-2, does utf-8 to ucs-2 encoding always work for seed? | ||||
|  | ||||
| Crypt update: | ||||
| - move bf_self_test() and sha256_self_test() elsewhere | ||||
| - Use 'cm' option only when FEAT_CRYPT is defined. | ||||
| - When not full match with magic, check for head and give warning about | ||||
|   unsupported crypt method. | ||||
| - if 'enc' is ucs-2, does utf-8 to ucs-2 encoding always work for seed? | ||||
| - Update E000 to error number. | ||||
|  | ||||
| Include cabal and obj syntax files. (Vincent Berthoux, 2010 May 16) | ||||
|  | ||||
| Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6) | ||||
|  | ||||
| E315 when trying to change a file in FileChangedRO autocommand event. | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* vi:set ts=8 sts=4 sw=4: | ||||
|  * | ||||
|  * Blowfish encryption for vim; in Blowfish output feedback mode. | ||||
|  * Blowfish encryption for Vim; in Blowfish output feedback mode. | ||||
|  * GPL(C) Mohsin Ahmed, http://www.cs.albany.edu/~mosh | ||||
|  * Based on http://www.schneier.com/blowfish.html by Bruce Schneier. | ||||
|  */ | ||||
| @@ -399,10 +399,10 @@ bf_key_init(password) | ||||
| { | ||||
|     int    i, j, keypos = 0; | ||||
|     long_u val, data_l, data_r; | ||||
|     char   *key; | ||||
|     char_u *key; | ||||
|     int    keylen; | ||||
|  | ||||
|     key = sha256_key((char *)password); | ||||
|     key = sha256_key(password); | ||||
|     keylen = STRLEN(key); | ||||
|     for (i = 0; i < 256; ++i) | ||||
|     { | ||||
| @@ -416,7 +416,7 @@ bf_key_init(password) | ||||
|     { | ||||
| 	val = 0; | ||||
| 	for (j = 0; j < 4; ++j) | ||||
| 	    val = (val << 8) | (key[keypos++ % keylen] & 0xff); | ||||
| 	    val = (val << 8) | key[keypos++ % keylen]; | ||||
| 	pax[i] = ipa[i] ^ val; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /* sha256.c */ | ||||
| char *sha256_key __ARGS((char *buf)); | ||||
| char_u *sha256_key __ARGS((char_u *buf)); | ||||
| int sha256_self_test __ARGS((void)); | ||||
| void sha2_seed __ARGS((char_u header[], int header_len)); | ||||
| /* vim: set ft=c : */ | ||||
|   | ||||
							
								
								
									
										44
									
								
								src/sha256.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								src/sha256.c
									
									
									
									
									
								
							| @@ -28,7 +28,7 @@ static void sha256_starts __ARGS((context_sha256_T *ctx)); | ||||
| static void sha256_process __ARGS((context_sha256_T *ctx, char_u data[64])); | ||||
| static void sha256_update __ARGS((context_sha256_T *ctx, char_u *input, uint32_t length)); | ||||
| static void sha256_finish __ARGS((context_sha256_T *ctx, char_u digest[32])); | ||||
| static char *sha256_bytes __ARGS((char *buf, int buflen)); | ||||
| static char_u *sha256_bytes __ARGS((char_u *buf, int buflen)); | ||||
| static unsigned int get_some_time __ARGS((void)); | ||||
|  | ||||
|  | ||||
| @@ -277,48 +277,42 @@ sha256_finish(ctx, digest) | ||||
|     PUT_UINT32(ctx->state[7], digest, 28); | ||||
| } | ||||
|  | ||||
|     static char * | ||||
| /* | ||||
|  * Returns hex digest of "buf[buflen]" in a static array. | ||||
|  */ | ||||
|     static char_u * | ||||
| sha256_bytes(buf, buflen) | ||||
|     char *buf; | ||||
|     int  buflen; | ||||
|     char_u *buf; | ||||
|     int    buflen; | ||||
| { | ||||
|     char_u	     sha256sum[32]; | ||||
|     static char      hexit[65]; | ||||
|     static char_u    hexit[65]; | ||||
|     int		     j; | ||||
|     context_sha256_T ctx; | ||||
|  | ||||
|     sha256_self_test(); | ||||
|  | ||||
|     sha256_starts(&ctx); | ||||
|     sha256_update(&ctx, (char_u *)buf, buflen); | ||||
|     sha256_update(&ctx, buf, buflen); | ||||
|     sha256_finish(&ctx, sha256sum); | ||||
|     for (j = 0; j < 32; j++) | ||||
| 	sprintf(hexit + j * 2, "%02x", sha256sum[j]); | ||||
| 	sprintf((char *)hexit + j * 2, "%02x", sha256sum[j]); | ||||
|     hexit[sizeof(hexit) - 1] = '\0'; | ||||
|     return hexit; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Returns sha256(buf) as 64 hex chars. | ||||
|  * Returns sha256(buf) as 64 hex chars in static array. | ||||
|  */ | ||||
|     char * | ||||
|     char_u * | ||||
| sha256_key(buf) | ||||
|     char *buf; | ||||
|     char_u *buf; | ||||
| { | ||||
|     static char *hexit = 0; | ||||
|     int		buflen; | ||||
|  | ||||
|     /* No passwd means don't encrypt */ | ||||
|     if (buf == NULL || *buf == NUL) | ||||
| 	return ""; | ||||
| 	return (char_u *)""; | ||||
|  | ||||
|     /* if password is "0", reuse previous hash, for user convienience. */ | ||||
|     if (!strcmp(buf, "0") && hexit) | ||||
| 	return hexit; | ||||
|  | ||||
|     buflen = strlen(buf); | ||||
|     hexit = sha256_bytes(buf, buflen); | ||||
|     return hexit; | ||||
|     return sha256_bytes(buf, STRLEN(buf)); | ||||
| } | ||||
|  | ||||
| /* | ||||
| @@ -353,7 +347,7 @@ sha256_self_test() | ||||
|     char_u	     buf[1000]; | ||||
|     char_u	     sha256sum[32]; | ||||
|     static int	     failures = 0; | ||||
|     char	     *hexit; | ||||
|     char_u	     *hexit; | ||||
|     static int	     sha256_self_tested = 0; | ||||
|  | ||||
|     if (sha256_self_tested > 0) | ||||
| @@ -364,9 +358,9 @@ sha256_self_test() | ||||
|     { | ||||
| 	if (i < 2) | ||||
| 	{ | ||||
| 	    hexit = sha256_bytes(sha_self_test_msg[i], | ||||
| 						strlen(sha_self_test_msg[i])); | ||||
| 	    strcpy(output, hexit); | ||||
| 	    hexit = sha256_bytes((char_u *)sha_self_test_msg[i], | ||||
| 						STRLEN(sha_self_test_msg[i])); | ||||
| 	    STRCPY(output, hexit); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user