summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-05-17 20:32:55 +0200
committerBram Moolenaar <Bram@vim.org>2010-05-17 20:32:55 +0200
commit0bbabe80800bd80b245b6e8b2fff4d3a908c5ded (patch)
tree66db6ba92e5df873e703f7982988985005c20fdd /src
parent823a165119fccd8ace6b8d37619ef68b75ecd44f (diff)
Fixed encryption big/little endian test.
Use uint32_t to avoid crash on 64 bit machines. Added error numbers for Blowfish errors. Fixed the tiny version not building.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/auto/configure293
-rw-r--r--src/blowfish.c93
-rw-r--r--src/config.h.in6
-rw-r--r--src/configure.in2
-rw-r--r--src/netbeans.c5
-rw-r--r--src/option.c10
-rw-r--r--src/sha256.c26
-rw-r--r--src/structs.h2
8 files changed, 382 insertions, 55 deletions
diff --git a/src/auto/configure b/src/auto/configure
index 98fdd7d37d..7537e9325d 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -1957,6 +1957,60 @@ $as_echo "$ac_res" >&6; }
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
} # ac_fn_c_check_type
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ # Order is important - never check a type that is potentially smaller
+ # than half of the expected target width.
+ for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ case $ac_type in #(
+ uint$2_t) :
+ eval "$3=yes" ;; #(
+ *) :
+ eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval as_val=\$$3
+ if test "x$as_val" = x""no; then :
+
+else
+ break
+fi
+ done
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_find_uintX_t
cat >auto/config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
@@ -8965,6 +9019,20 @@ $as_echo "#define gid_t int" >>confdefs.h
fi
+ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t"
+case $ac_cv_c_uint32_t in #(
+ no|yes) ;; #(
+ *)
+
+$as_echo "#define _UINT32_T 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define uint32_t $ac_cv_c_uint32_t
+_ACEOF
+;;
+ esac
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
if test "${ac_cv_header_time+set}" = set; then :
@@ -9022,6 +9090,230 @@ _ACEOF
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are at least two -arch flags with different values.
+ ac_arch=
+ ac_prev=
+ for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+ if test -n "$ac_prev"; then
+ case $ac_word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+ ac_arch=$ac_word
+ else
+ ac_cv_c_bigendian=universal
+ break
+ fi
+ ;;
+ esac
+ ac_prev=
+ elif test "x$ac_word" = "x-arch"; then
+ ac_prev=arch
+ fi
+ done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then :
+ # Try to guess by grepping values from an object file.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_bigendian=no
+else
+ ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+ no)
+ ;; #(
+ universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+ ;; #(
+ *)
+ as_fn_error "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rlim_t" >&5
$as_echo_n "checking for rlim_t... " >&6; }
@@ -11727,6 +12019,7 @@ LTLIBOBJS=$ac_ltlibobjs
+
: ${CONFIG_STATUS=./config.status}
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
diff --git a/src/blowfish.c b/src/blowfish.c
index ab2e7e00f2..10708871e0 100644
--- a/src/blowfish.c
+++ b/src/blowfish.c
@@ -1,7 +1,13 @@
/* vi:set ts=8 sts=4 sw=4:
*
+ * VIM - Vi IMproved by Bram Moolenaar
+ *
+ * Do ":help uganda" in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ *
* Blowfish encryption for Vim; in Blowfish output feedback mode.
- * GPL(C) Mohsin Ahmed, http://www.cs.albany.edu/~mosh
+ * Contributed by Mohsin Ahmed, http://www.cs.albany.edu/~mosh
* Based on http://www.schneier.com/blowfish.html by Bruce Schneier.
*/
@@ -15,32 +21,29 @@
#define BF_OFB_LEN (8*(BF_BLOCK))
typedef union {
- long_u ul[2];
- char_u uc[8];
+ uint32_t ul[2];
+ char_u uc[8];
} block8;
-#ifdef __BORLANDC__
-# define LITTLE_ENDIAN
+#ifdef WIN3264
+ /* MS-Windows is always little endian */
#else
-# if !defined(LITTLE_ENDIAN) && !defined(BIG_ENDIAN)
-# if (('1234' >> 24) == '1')
-# define LITTLE_ENDIAN 1
-# else
-# if (('4321' >> 24) == '1')
-# define BIG_ENDIAN 1
-# endif
-# endif
+# ifdef HAVE_CONFIG_H
+ /* in configure.in AC_C_BIGENDIAN() defines WORDS_BIGENDIAN when needed */
+# else
+ error!
+ Please change this code to define WORDS_BIGENDIAN for big-endian machines.
# endif
#endif
-static void bf_e_block __ARGS((long_u *p_xl, long_u *p_xr));
+static void bf_e_block __ARGS((uint32_t *p_xl, uint32_t *p_xr));
static void bf_e_cblock __ARGS((char_u *block));
-static int bf_check_tables __ARGS((long_u ipa[18], long_u sbi[4][256], long_u val));
+static int bf_check_tables __ARGS((uint32_t ipa[18], uint32_t sbi[4][256], uint32_t val));
static int bf_self_test __ARGS((void));
// Blowfish code
-static long_u pax[18];
-static long_u ipa[18] = {
+static uint32_t pax[18];
+static uint32_t ipa[18] = {
0x243f6a88u, 0x85a308d3u, 0x13198a2eu,
0x03707344u, 0xa4093822u, 0x299f31d0u,
0x082efa98u, 0xec4e6c89u, 0x452821e6u,
@@ -49,8 +52,8 @@ static long_u ipa[18] = {
0xb5470917u, 0x9216d5d9u, 0x8979fb1bu
};
-static long_u sbx[4][256];
-static long_u sbi[4][256] = {
+static uint32_t sbx[4][256];
+static uint32_t sbi[4][256] = {
{0xd1310ba6u, 0x98dfb5acu, 0x2ffd72dbu, 0xd01adfb7u,
0xb8e1afedu, 0x6a267e96u, 0xba7c9045u, 0xf12c7f99u,
0x24a19947u, 0xb3916cf7u, 0x0801f2e2u, 0x858efc16u,
@@ -328,10 +331,10 @@ static long_u sbi[4][256] = {
static void
bf_e_block(p_xl, p_xr)
- long_u *p_xl;
- long_u *p_xr;
+ uint32_t *p_xl;
+ uint32_t *p_xr;
{
- long_u temp, xl = *p_xl, xr = *p_xr;
+ uint32_t temp, xl = *p_xl, xr = *p_xr;
F1(0) F2(1) F1(2) F2(3) F1(4) F2(5) F1(6) F2(7)
F1(8) F2(9) F1(10) F2(11) F1(12) F2(13) F1(14) F2(15)
@@ -343,10 +346,10 @@ bf_e_block(p_xl, p_xr)
#if 0 /* not used */
static void
bf_d_block(p_xl, p_xr)
- long_u *p_xl;
- long_u *p_xr;
+ uint32_t *p_xl;
+ uint32_t *p_xr;
{
- long_u temp, xl = *p_xl, xr = *p_xr;
+ uint32_t temp, xl = *p_xl, xr = *p_xr;
F1(17) F2(16) F1(15) F2(14) F1(13) F2(12) F1(11) F2(10)
F1(9) F2(8) F1(7) F2(6) F1(5) F2(4) F1(3) F2(2)
xl ^= pax[1];
@@ -357,7 +360,7 @@ bf_d_block(p_xl, p_xr)
#endif
-#ifdef BIG_ENDIAN
+#ifdef WORDS_BIGENDIAN
# define htonl2(x) \
x = ((((x) & 0xffL) << 24) | (((x) & 0xff00L) << 8) | \
(((x) & 0xff0000L) >> 8) | (((x) & 0xff000000L) >> 24))
@@ -397,10 +400,10 @@ bf_d_cblock(block)
bf_key_init(password)
char_u *password;
{
- int i, j, keypos = 0;
- long_u val, data_l, data_r;
- char_u *key;
- int keylen;
+ int i, j, keypos = 0;
+ uint32_t val, data_l, data_r;
+ char_u *key;
+ int keylen;
key = sha256_key(password);
keylen = STRLEN(key);
@@ -444,12 +447,12 @@ bf_key_init(password)
*/
static int
bf_check_tables(ipa, sbi, val)
- long_u ipa[18];
- long_u sbi[4][256];
- long_u val;
+ uint32_t ipa[18];
+ uint32_t sbi[4][256];
+ uint32_t val;
{
int i, j;
- long_u c = 0;
+ uint32_t c = 0;
for (i = 0; i < 18; i++)
c ^= ipa[i];
@@ -460,10 +463,11 @@ bf_check_tables(ipa, sbi, val)
}
typedef struct {
- char_u password[64];
- char_u plaintxt[8];
- char_u cryptxt[8];
- long_u keysum;
+ char_u password[64];
+ char_u plaintxt[8];
+ char_u cryptxt[8];
+ char_u badcryptxt[8]; /* cryptxt when big/little endian is wrong */
+ uint32_t keysum;
} struct_bf_test_data;
// Assert bf(password, plaintxt) is cryptxt.
@@ -472,11 +476,8 @@ static struct_bf_test_data bf_test_data[] = {
{
"password",
"plaintxt",
-#if 0 /* This value doesn't work, why??? */
"\x55\xca\x56\x3a\xef\xe1\x9c\x73", /* cryptxt */
-#else
- "\x47\xd9\x67\x49\x91\xc5\x9a\x95", /* cryptxt */
-#endif
+ "\x47\xd9\x67\x49\x91\xc5\x9a\x95", /* badcryptxt */
0x5de01bdbu, /* keysum */
},
};
@@ -505,7 +506,11 @@ bf_self_test()
memcpy(bk.uc, bf_test_data[i].plaintxt, 8);
bf_e_cblock(bk.uc);
if (memcmp(bk.uc, bf_test_data[i].cryptxt, 8) != 0)
+ {
+ if (err == 0 && memcmp(bk.uc, bf_test_data[i].badcryptxt, 8) == 0)
+ EMSG(_("E817: Blowfish big/little endian use wrong"));
err++;
+ }
}
return err > 0 ? FAIL : OK;
@@ -567,12 +572,12 @@ blowfish_self_test()
{
if (sha256_self_test() == FAIL)
{
- EMSG2(_("E000: sha256 test failed"),"");
+ EMSG(_("E818: sha256 test failed"));
return FAIL;
}
if (bf_self_test() == FAIL)
{
- EMSG2(_("E000: Blowfish test failed"),"");
+ EMSG(_("E819: Blowfish test failed"));
return FAIL;
}
return OK;
diff --git a/src/config.h.in b/src/config.h.in
index e05d59ed32..c5f70fc8e0 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -74,6 +74,9 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
+/* Define to `unsigned int' or other type that is 32 bit. */
+#undef uint32_t
+
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
@@ -83,6 +86,9 @@
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef dev_t
+/* Define on big-endian machines */
+#undef WORDS_BIGENDIAN
+
/* Define to `unsigned long' if <sys/types.h> doesn't define. */
#undef rlim_t
diff --git a/src/configure.in b/src/configure.in
index ae10bcf662..72138f78e1 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -2246,9 +2246,11 @@ AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_UID_T
+AC_TYPE_UINT32_T
AC_HEADER_TIME
AC_CHECK_TYPE(ino_t, long)
AC_CHECK_TYPE(dev_t, unsigned)
+AC_C_BIGENDIAN(,,,)
AC_MSG_CHECKING(for rlim_t)
if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
diff --git a/src/netbeans.c b/src/netbeans.c
index 93a9aea755..0ef6b69045 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -43,6 +43,11 @@
# define sock_close(sd) closesocket(sd)
# define sleep(t) Sleep(t*1000) /* WinAPI Sleep() accepts milliseconds */
#else
+ /* uint32_t may be defined by configure, but netdb.h indirectly includes
+ * stdint.h which tries to typedef uint32_t and fails. */
+# ifdef uint32_t
+# undef uint32_t
+# endif
# include <netdb.h>
# include <netinet/in.h>
# include <sys/socket.h>
diff --git a/src/option.c b/src/option.c
index e7ec0c8b98..6c0618ab37 100644
--- a/src/option.c
+++ b/src/option.c
@@ -278,7 +278,9 @@ static char_u *p_cino;
#if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
static char_u *p_cinw;
#endif
+#ifdef FEAT_CRYPT
static long p_cm;
+#endif
#ifdef FEAT_COMMENTS
static char_u *p_com;
#endif
@@ -837,7 +839,11 @@ static struct vimoption
{(char_u *)CPO_VI, (char_u *)CPO_VIM}
SCRIPTID_INIT},
{"cryptmethod", "cm", P_NUM|P_VI_DEF|P_VIM,
+#ifdef FEAT_CRYPT
(char_u *)&p_cm, PV_CM,
+#else
+ (char_u *)NULL, PV_NONE,
+#endif
{(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
{"cscopepathcomp", "cspc", P_NUM|P_VI_DEF|P_VIM,
#ifdef FEAT_CSCOPE
@@ -7875,6 +7881,7 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
#endif
+#ifdef FEAT_CRYPT
else if (pp == &curbuf->b_p_cm)
{
if (curbuf->b_p_cm < 0)
@@ -7890,6 +7897,7 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
if (curbuf->b_p_cm > 0 && blowfish_self_test() == FAIL)
curbuf->b_p_cm = 0;
}
+#endif
#ifdef FEAT_WINDOWS
/* (re)set last window status line */
@@ -9307,7 +9315,9 @@ get_varp(p)
case PV_CINK: return (char_u *)&(curbuf->b_p_cink);
case PV_CINO: return (char_u *)&(curbuf->b_p_cino);
#endif
+#ifdef FEAT_CRYPT
case PV_CM: return (char_u *)&(curbuf->b_p_cm);
+#endif
#if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
case PV_CINW: return (char_u *)&(curbuf->b_p_cinw);
#endif
diff --git a/src/sha256.c b/src/sha256.c
index e157255288..de3211a92f 100644
--- a/src/sha256.c
+++ b/src/sha256.c
@@ -1,23 +1,27 @@
/* vi:set ts=8 sts=4 sw=4:
*
- * FIPS-180-2 compliant SHA-256 implementation
- * GPL by Christophe Devine.
- * Modified for md5deep, in public domain.
- * Modified For Vim, GPL(C) Mohsin Ahmed, http://www.cs.albany.edu/~mosh
+ * VIM - Vi IMproved by Bram Moolenaar
*
- * Vim specific notes:
- * Functions exported by this file:
- * 1. sha256_key() hashes the password to 64 bytes char string.
- * 2. sha2_seed() generates a random header.
- * sha256_self_test() is implicitly called once.
+ * Do ":help uganda" in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ *
+ * FIPS-180-2 compliant SHA-256 implementation
+ * GPL by Christophe Devine.
+ * Modified for md5deep, in public domain.
+ * Modified For Vim, Mohsin Ahmed, http://www.cs.albany.edu/~mosh
+ *
+ * Vim specific notes:
+ * Functions exported by this file:
+ * 1. sha256_key() hashes the password to 64 bytes char string.
+ * 2. sha2_seed() generates a random header.
+ * sha256_self_test() is implicitly called once.
*/
#include "vim.h"
#ifdef FEAT_CRYPT
-typedef unsigned long uint32_t;
-
typedef struct {
uint32_t total[2];
uint32_t state[8];
diff --git a/src/structs.h b/src/structs.h
index 5aceb59a84..a34fa664aa 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1358,7 +1358,9 @@ struct file_buffer
#ifdef FEAT_INS_EXPAND
char_u *b_p_cpt; /* 'complete' */
#endif
+#ifdef FEAT_CRYPT
long b_p_cm; /* 'cryptmethod' */
+#endif
#ifdef FEAT_COMPL_FUNC
char_u *b_p_cfu; /* 'completefunc' */
char_u *b_p_ofu; /* 'omnifunc' */