, , .
fopen(), _tfopen(). C , . , _tfopen(), , fopen(), Windows _wfopen() , "unicode". , Windows- Win32, CreateFile().
, - . , , , . , , , ( , , ). - ; (8 kB - ) SHA1_Init(), SHA1_Update() SHA1_Final().
fread() , . .
SHA1(), strlen() , . strlen() ; , . 0. , , 0, strlen() ( ). , , , .
: (untested):
int
do_sha1_file(char *name, unsigned char *out)
{
FILE *f;
unsigned char buf[8192];
SHA_CTX sc;
int err;
f = fopen(name, "rb");
if (f == NULL) {
return -1;
}
SHA1_Init(&sc);
for (;;) {
size_t len;
len = fread(buf, 1, sizeof buf, f);
if (len == 0)
break;
SHA1_Update(&sc, buf, len);
}
err = ferror(f);
fclose(f);
if (err) {
return -1;
}
SHA1_Final(out, &sc);
return 0;
}
! (<stdio.h> sha.h OpenSSL)