Convert tabs to spaces
This commit is contained in:
parent
80506f18fe
commit
74d492b50d
7 changed files with 462 additions and 462 deletions
|
@ -55,119 +55,119 @@ static int
|
|||
pickparams(uint32_t maxmem, uint32_t megaops,
|
||||
int * logN, uint32_t * r, uint32_t * p)
|
||||
{
|
||||
size_t memlimit;
|
||||
double opps;
|
||||
double opslimit;
|
||||
double maxN, maxrp;
|
||||
int rc;
|
||||
size_t memlimit;
|
||||
double opps;
|
||||
double opslimit;
|
||||
double maxN, maxrp;
|
||||
int rc;
|
||||
|
||||
/* Figure out how much memory to use. */
|
||||
memlimit = MEGA * maxmem;
|
||||
opslimit = MEGA * megaops;
|
||||
/* Figure out how much memory to use. */
|
||||
memlimit = MEGA * maxmem;
|
||||
opslimit = MEGA * megaops;
|
||||
|
||||
/* Fix r = 8 for now. */
|
||||
*r = 8;
|
||||
/* Fix r = 8 for now. */
|
||||
*r = 8;
|
||||
|
||||
/*
|
||||
* The memory limit requires that 128Nr <= memlimit, while the CPU
|
||||
* limit requires that 4Nrp <= opslimit. If opslimit < memlimit/32,
|
||||
* opslimit imposes the stronger limit on N.
|
||||
*/
|
||||
/*
|
||||
* The memory limit requires that 128Nr <= memlimit, while the CPU
|
||||
* limit requires that 4Nrp <= opslimit. If opslimit < memlimit/32,
|
||||
* opslimit imposes the stronger limit on N.
|
||||
*/
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "Requiring 128Nr <= %zu, 4Nrp <= %f\n",
|
||||
memlimit, opslimit);
|
||||
fprintf(stderr, "Requiring 128Nr <= %zu, 4Nrp <= %f\n",
|
||||
memlimit, opslimit);
|
||||
#endif
|
||||
if (opslimit < memlimit/32) {
|
||||
/* Set p = 1 and choose N based on the CPU limit. */
|
||||
*p = 1;
|
||||
maxN = opslimit / (*r * 4);
|
||||
for (*logN = 1; *logN < 63; *logN += 1) {
|
||||
if ((uint64_t)(1) << *logN > maxN / 2)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* Set N based on the memory limit. */
|
||||
maxN = memlimit / (*r * 128);
|
||||
for (*logN = 1; *logN < 63; *logN += 1) {
|
||||
if ((uint64_t)(1) << *logN > maxN / 2)
|
||||
break;
|
||||
}
|
||||
if (opslimit < memlimit/32) {
|
||||
/* Set p = 1 and choose N based on the CPU limit. */
|
||||
*p = 1;
|
||||
maxN = opslimit / (*r * 4);
|
||||
for (*logN = 1; *logN < 63; *logN += 1) {
|
||||
if ((uint64_t)(1) << *logN > maxN / 2)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* Set N based on the memory limit. */
|
||||
maxN = memlimit / (*r * 128);
|
||||
for (*logN = 1; *logN < 63; *logN += 1) {
|
||||
if ((uint64_t)(1) << *logN > maxN / 2)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Choose p based on the CPU limit. */
|
||||
maxrp = (opslimit / 4) / ((uint64_t)(1) << *logN);
|
||||
if (maxrp > 0x3fffffff)
|
||||
maxrp = 0x3fffffff;
|
||||
*p = (uint32_t)(maxrp) / *r;
|
||||
}
|
||||
/* Choose p based on the CPU limit. */
|
||||
maxrp = (opslimit / 4) / ((uint64_t)(1) << *logN);
|
||||
if (maxrp > 0x3fffffff)
|
||||
maxrp = 0x3fffffff;
|
||||
*p = (uint32_t)(maxrp) / *r;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "N = %zu r = %d p = %d\n",
|
||||
(size_t)(1) << *logN, (int)(*r), (int)(*p));
|
||||
fprintf(stderr, "N = %zu r = %d p = %d\n",
|
||||
(size_t)(1) << *logN, (int)(*r), (int)(*p));
|
||||
#endif
|
||||
|
||||
/* Success! */
|
||||
return (0);
|
||||
/* Success! */
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
checkparams(uint32_t maxmem, uint32_t megaops,
|
||||
int logN, uint32_t r, uint32_t p)
|
||||
{
|
||||
size_t memlimit;
|
||||
double opps;
|
||||
double opslimit;
|
||||
uint64_t N;
|
||||
int rc;
|
||||
size_t memlimit;
|
||||
double opps;
|
||||
double opslimit;
|
||||
uint64_t N;
|
||||
int rc;
|
||||
|
||||
/* Figure out the maximum amount of memory we can use. */
|
||||
memlimit = 1000000 * maxmem;
|
||||
/* Figure out the maximum amount of memory we can use. */
|
||||
memlimit = 1000000 * maxmem;
|
||||
|
||||
opslimit = 1000000 * megaops;
|
||||
opslimit = 1000000 * megaops;
|
||||
|
||||
/* Sanity-check values. */
|
||||
if ((logN < 1) || (logN > 63))
|
||||
return (7);
|
||||
if ((uint64_t)(r) * (uint64_t)(p) >= 0x40000000)
|
||||
return (7);
|
||||
/* Sanity-check values. */
|
||||
if ((logN < 1) || (logN > 63))
|
||||
return (7);
|
||||
if ((uint64_t)(r) * (uint64_t)(p) >= 0x40000000)
|
||||
return (7);
|
||||
|
||||
/* Check limits. */
|
||||
N = (uint64_t)(1) << logN;
|
||||
if ((memlimit / N) / r < 128)
|
||||
return (9);
|
||||
if ((opslimit / N) / (r * p) < 4)
|
||||
return (10);
|
||||
/* Check limits. */
|
||||
N = (uint64_t)(1) << logN;
|
||||
if ((memlimit / N) / r < 128)
|
||||
return (9);
|
||||
if ((opslimit / N) / (r * p) < 4)
|
||||
return (10);
|
||||
|
||||
/* Success! */
|
||||
return (0);
|
||||
/* Success! */
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
bintohex(char* outstring, size_t nbytes, uint8_t* data)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < nbytes; i++)
|
||||
sprintf(outstring + 2 * i, "%02x", data[i]);
|
||||
outstring[2 * nbytes] = '\0';
|
||||
return 0;
|
||||
int i;
|
||||
for (i = 0; i < nbytes; i++)
|
||||
sprintf(outstring + 2 * i, "%02x", data[i]);
|
||||
outstring[2 * nbytes] = '\0';
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
sha256string(uint8_t hash[32], uint8_t* s, int n)
|
||||
{
|
||||
SHA256_CTX sha256_ctx;
|
||||
SHA256_Init(&sha256_ctx);
|
||||
SHA256_Update(&sha256_ctx, (void*) s, n);
|
||||
SHA256_Final(hash, &sha256_ctx);
|
||||
SHA256_CTX sha256_ctx;
|
||||
SHA256_Init(&sha256_ctx);
|
||||
SHA256_Update(&sha256_ctx, (void*) s, n);
|
||||
SHA256_Final(hash, &sha256_ctx);
|
||||
}
|
||||
|
||||
static int
|
||||
getsalt(uint8_t salt[32], char* site)
|
||||
{
|
||||
sha256string(salt, (uint8_t*) site, strlen(site));
|
||||
char buf[65];
|
||||
bintohex(buf, 32, salt);
|
||||
printf("Site hex: %s\n", buf);
|
||||
return (0);
|
||||
sha256string(salt, (uint8_t*) site, strlen(site));
|
||||
char buf[65];
|
||||
bintohex(buf, 32, salt);
|
||||
printf("Site hex: %s\n", buf);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -175,31 +175,31 @@ genpass(uint8_t dk[64],
|
|||
const uint8_t * passwd, size_t passwdlen, char* site,
|
||||
uint32_t maxmem, uint32_t megaops)
|
||||
{
|
||||
uint8_t salt[32];
|
||||
uint8_t hbuf[32];
|
||||
int logN;
|
||||
uint64_t N;
|
||||
uint32_t r;
|
||||
uint32_t p;
|
||||
SHA256_CTX ctx;
|
||||
uint8_t * key_hmac = &dk[32];
|
||||
HMAC_SHA256_CTX hctx;
|
||||
int rc;
|
||||
uint8_t salt[32];
|
||||
uint8_t hbuf[32];
|
||||
int logN;
|
||||
uint64_t N;
|
||||
uint32_t r;
|
||||
uint32_t p;
|
||||
SHA256_CTX ctx;
|
||||
uint8_t * key_hmac = &dk[32];
|
||||
HMAC_SHA256_CTX hctx;
|
||||
int rc;
|
||||
|
||||
/* Pick values for N, r, p. */
|
||||
if ((rc = pickparams(maxmem, megaops,
|
||||
&logN, &r, &p)) != 0)
|
||||
return (rc);
|
||||
N = (uint64_t)(1) << logN;
|
||||
/* Pick values for N, r, p. */
|
||||
if ((rc = pickparams(maxmem, megaops,
|
||||
&logN, &r, &p)) != 0)
|
||||
return (rc);
|
||||
N = (uint64_t)(1) << logN;
|
||||
|
||||
/* Get some salt using the site. */
|
||||
if ((rc = getsalt(salt, site)) != 0)
|
||||
return (rc);
|
||||
/* Get some salt using the site. */
|
||||
if ((rc = getsalt(salt, site)) != 0)
|
||||
return (rc);
|
||||
|
||||
/* Generate the derived keys. */
|
||||
if (crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
|
||||
return (3);
|
||||
/* Generate the derived keys. */
|
||||
if (crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
|
||||
return (3);
|
||||
|
||||
/* Success! */
|
||||
return (0);
|
||||
/* Success! */
|
||||
return (0);
|
||||
}
|
||||
|
|
|
@ -56,20 +56,20 @@
|
|||
*/
|
||||
/**
|
||||
* Return codes from scrypt(enc|dec)_(buf|file):
|
||||
* 0 success
|
||||
* 1 getrlimit or sysctl(hw.usermem) failed
|
||||
* 2 clock_getres or clock_gettime failed
|
||||
* 3 error computing derived key
|
||||
* 4 could not read salt from /dev/urandom
|
||||
* 5 error in OpenSSL
|
||||
* 6 malloc failed
|
||||
* 7 data is not a valid scrypt-encrypted block
|
||||
* 8 unrecognized scrypt format
|
||||
* 9 decrypting file would take too much memory
|
||||
* 10 decrypting file would take too long
|
||||
* 11 password is incorrect
|
||||
* 12 error writing output file
|
||||
* 13 error reading input file
|
||||
* 0 success
|
||||
* 1 getrlimit or sysctl(hw.usermem) failed
|
||||
* 2 clock_getres or clock_gettime failed
|
||||
* 3 error computing derived key
|
||||
* 4 could not read salt from /dev/urandom
|
||||
* 5 error in OpenSSL
|
||||
* 6 malloc failed
|
||||
* 7 data is not a valid scrypt-encrypted block
|
||||
* 8 unrecognized scrypt format
|
||||
* 9 decrypting file would take too much memory
|
||||
* 10 decrypting file would take too long
|
||||
* 11 password is incorrect
|
||||
* 12 error writing output file
|
||||
* 13 error reading input file
|
||||
*/
|
||||
int bintohex(char* outstring, size_t nbytes, uint8_t* data);
|
||||
|
||||
|
@ -80,15 +80,15 @@ int genpass(uint8_t dk[64],
|
|||
uint32_t maxmem, uint32_t megaops);
|
||||
|
||||
typedef struct {
|
||||
char* keyfile;
|
||||
uint32_t maxmem;
|
||||
uint32_t megaops;
|
||||
int numbers_only;
|
||||
size_t outputlength;
|
||||
uint8_t* passwd;
|
||||
size_t passwdlen;
|
||||
char* site;
|
||||
int verbose;
|
||||
char* keyfile;
|
||||
uint32_t maxmem;
|
||||
uint32_t megaops;
|
||||
int numbers_only;
|
||||
size_t outputlength;
|
||||
uint8_t* passwd;
|
||||
size_t passwdlen;
|
||||
char* site;
|
||||
int verbose;
|
||||
} sg_parms_t, *sg_parms_ptr;
|
||||
|
||||
#endif /* !_GENPASS_H_ */
|
||||
|
|
|
@ -2,29 +2,29 @@
|
|||
|
||||
void hashtopass(int numbers_only, char* p, size_t len, uint8_t* key)
|
||||
{
|
||||
int i;
|
||||
char* numerals = "0123456789";
|
||||
int i;
|
||||
char* numerals = "0123456789";
|
||||
|
||||
if (numbers_only) {
|
||||
if (numbers_only) {
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
p[i] = numerals[key[i] % 10];
|
||||
for (i = 0; i < len; i++)
|
||||
p[i] = numerals[key[i] % 10];
|
||||
|
||||
} else {
|
||||
} else {
|
||||
|
||||
char* lowers = "abcdefghijklmnopqrstuvwxyz";
|
||||
char* uppers = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
char* allchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
char* lowers = "abcdefghijklmnopqrstuvwxyz";
|
||||
char* uppers = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
char* allchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||
|
||||
p[0] = lowers[key[0] % 26];
|
||||
p[1] = numerals[key[1] % 10];
|
||||
p[2] = uppers[key[2] % 26];
|
||||
p[0] = lowers[key[0] % 26];
|
||||
p[1] = numerals[key[1] % 10];
|
||||
p[2] = uppers[key[2] % 26];
|
||||
|
||||
size_t i;
|
||||
for (i = 3; i < len; i++)
|
||||
p[i] = allchars[key[i] % (26 + 26 + 10)];
|
||||
}
|
||||
size_t i;
|
||||
for (i = 3; i < len; i++)
|
||||
p[i] = allchars[key[i] % (26 + 26 + 10)];
|
||||
}
|
||||
|
||||
p[len] = '\0';
|
||||
p[len] = '\0';
|
||||
|
||||
}
|
|
@ -52,92 +52,92 @@ int
|
|||
tarsnap_readpass(char ** passwd, const char * prompt,
|
||||
const char * confirmprompt, int devtty)
|
||||
{
|
||||
FILE * readfrom;
|
||||
char passbuf[MAXPASSLEN];
|
||||
char confpassbuf[MAXPASSLEN];
|
||||
struct termios term, term_old;
|
||||
int usingtty;
|
||||
FILE * readfrom;
|
||||
char passbuf[MAXPASSLEN];
|
||||
char confpassbuf[MAXPASSLEN];
|
||||
struct termios term, term_old;
|
||||
int usingtty;
|
||||
|
||||
/*
|
||||
* If devtty != 0, try to open /dev/tty; if that fails, or if devtty
|
||||
* is zero, we'll read the password from stdin instead.
|
||||
*/
|
||||
if ((devtty == 0) || ((readfrom = fopen("/dev/tty", "r")) == NULL))
|
||||
readfrom = stdin;
|
||||
/*
|
||||
* If devtty != 0, try to open /dev/tty; if that fails, or if devtty
|
||||
* is zero, we'll read the password from stdin instead.
|
||||
*/
|
||||
if ((devtty == 0) || ((readfrom = fopen("/dev/tty", "r")) == NULL))
|
||||
readfrom = stdin;
|
||||
|
||||
/* If we're reading from a terminal, try to disable echo. */
|
||||
if ((usingtty = isatty(fileno(readfrom))) != 0) {
|
||||
if (tcgetattr(fileno(readfrom), &term_old)) {
|
||||
warn("Cannot read terminal settings");
|
||||
goto err1;
|
||||
}
|
||||
memcpy(&term, &term_old, sizeof(struct termios));
|
||||
term.c_lflag = (term.c_lflag & ~ECHO) | ECHONL;
|
||||
if (tcsetattr(fileno(readfrom), TCSANOW, &term)) {
|
||||
warn("Cannot set terminal settings");
|
||||
goto err1;
|
||||
}
|
||||
}
|
||||
/* If we're reading from a terminal, try to disable echo. */
|
||||
if ((usingtty = isatty(fileno(readfrom))) != 0) {
|
||||
if (tcgetattr(fileno(readfrom), &term_old)) {
|
||||
warn("Cannot read terminal settings");
|
||||
goto err1;
|
||||
}
|
||||
memcpy(&term, &term_old, sizeof(struct termios));
|
||||
term.c_lflag = (term.c_lflag & ~ECHO) | ECHONL;
|
||||
if (tcsetattr(fileno(readfrom), TCSANOW, &term)) {
|
||||
warn("Cannot set terminal settings");
|
||||
goto err1;
|
||||
}
|
||||
}
|
||||
|
||||
retry:
|
||||
/* If we have a terminal, prompt the user to enter the password. */
|
||||
if (usingtty)
|
||||
fprintf(stderr, "%s: ", prompt);
|
||||
/* If we have a terminal, prompt the user to enter the password. */
|
||||
if (usingtty)
|
||||
fprintf(stderr, "%s: ", prompt);
|
||||
|
||||
/* Read the password. */
|
||||
if (fgets(passbuf, MAXPASSLEN, readfrom) == NULL) {
|
||||
warn("Cannot read password");
|
||||
goto err2;
|
||||
}
|
||||
/* Read the password. */
|
||||
if (fgets(passbuf, MAXPASSLEN, readfrom) == NULL) {
|
||||
warn("Cannot read password");
|
||||
goto err2;
|
||||
}
|
||||
|
||||
/* Confirm the password if necessary. */
|
||||
if (confirmprompt != NULL) {
|
||||
if (usingtty)
|
||||
fprintf(stderr, "%s: ", confirmprompt);
|
||||
if (fgets(confpassbuf, MAXPASSLEN, readfrom) == NULL) {
|
||||
warn("Cannot read password");
|
||||
goto err2;
|
||||
}
|
||||
if (strcmp(passbuf, confpassbuf)) {
|
||||
fprintf(stderr,
|
||||
"Passwords mismatch, please try again\n");
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
/* Confirm the password if necessary. */
|
||||
if (confirmprompt != NULL) {
|
||||
if (usingtty)
|
||||
fprintf(stderr, "%s: ", confirmprompt);
|
||||
if (fgets(confpassbuf, MAXPASSLEN, readfrom) == NULL) {
|
||||
warn("Cannot read password");
|
||||
goto err2;
|
||||
}
|
||||
if (strcmp(passbuf, confpassbuf)) {
|
||||
fprintf(stderr,
|
||||
"Passwords mismatch, please try again\n");
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Terminate the string at the first "\r" or "\n" (if any). */
|
||||
passbuf[strcspn(passbuf, "\r\n")] = '\0';
|
||||
/* Terminate the string at the first "\r" or "\n" (if any). */
|
||||
passbuf[strcspn(passbuf, "\r\n")] = '\0';
|
||||
|
||||
/* If we changed terminal settings, reset them. */
|
||||
if (usingtty)
|
||||
tcsetattr(fileno(readfrom), TCSANOW, &term_old);
|
||||
/* If we changed terminal settings, reset them. */
|
||||
if (usingtty)
|
||||
tcsetattr(fileno(readfrom), TCSANOW, &term_old);
|
||||
|
||||
/* Close /dev/tty if we opened it. */
|
||||
if (readfrom != stdin)
|
||||
fclose(readfrom);
|
||||
/* Close /dev/tty if we opened it. */
|
||||
if (readfrom != stdin)
|
||||
fclose(readfrom);
|
||||
|
||||
/* Copy the password out. */
|
||||
if ((*passwd = strdup(passbuf)) == NULL) {
|
||||
warn("Cannot allocate memory");
|
||||
goto err1;
|
||||
}
|
||||
/* Copy the password out. */
|
||||
if ((*passwd = strdup(passbuf)) == NULL) {
|
||||
warn("Cannot allocate memory");
|
||||
goto err1;
|
||||
}
|
||||
|
||||
/* Zero any stored passwords. */
|
||||
memset(passbuf, 0, MAXPASSLEN);
|
||||
memset(confpassbuf, 0, MAXPASSLEN);
|
||||
/* Zero any stored passwords. */
|
||||
memset(passbuf, 0, MAXPASSLEN);
|
||||
memset(confpassbuf, 0, MAXPASSLEN);
|
||||
|
||||
/* Success! */
|
||||
return (0);
|
||||
/* Success! */
|
||||
return (0);
|
||||
|
||||
err2:
|
||||
/* Reset terminal settings if necessary. */
|
||||
if (usingtty)
|
||||
tcsetattr(fileno(readfrom), TCSAFLUSH, &term_old);
|
||||
/* Reset terminal settings if necessary. */
|
||||
if (usingtty)
|
||||
tcsetattr(fileno(readfrom), TCSAFLUSH, &term_old);
|
||||
err1:
|
||||
/* Close /dev/tty if we opened it. */
|
||||
if (readfrom != stdin)
|
||||
fclose(readfrom);
|
||||
/* Close /dev/tty if we opened it. */
|
||||
if (readfrom != stdin)
|
||||
fclose(readfrom);
|
||||
|
||||
/* Failure! */
|
||||
return (-1);
|
||||
/* Failure! */
|
||||
return (-1);
|
||||
}
|
||||
|
|
|
@ -47,93 +47,93 @@
|
|||
static inline uint32_t
|
||||
be32dec(const void *pp)
|
||||
{
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
|
||||
return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8) +
|
||||
((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
|
||||
return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8) +
|
||||
((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
|
||||
}
|
||||
|
||||
static inline void
|
||||
be32enc(void *pp, uint32_t x)
|
||||
{
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
|
||||
p[3] = x & 0xff;
|
||||
p[2] = (x >> 8) & 0xff;
|
||||
p[1] = (x >> 16) & 0xff;
|
||||
p[0] = (x >> 24) & 0xff;
|
||||
p[3] = x & 0xff;
|
||||
p[2] = (x >> 8) & 0xff;
|
||||
p[1] = (x >> 16) & 0xff;
|
||||
p[0] = (x >> 24) & 0xff;
|
||||
}
|
||||
|
||||
static inline uint64_t
|
||||
be64dec(const void *pp)
|
||||
{
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
|
||||
return ((uint64_t)(p[7]) + ((uint64_t)(p[6]) << 8) +
|
||||
((uint64_t)(p[5]) << 16) + ((uint64_t)(p[4]) << 24) +
|
||||
((uint64_t)(p[3]) << 32) + ((uint64_t)(p[2]) << 40) +
|
||||
((uint64_t)(p[1]) << 48) + ((uint64_t)(p[0]) << 56));
|
||||
return ((uint64_t)(p[7]) + ((uint64_t)(p[6]) << 8) +
|
||||
((uint64_t)(p[5]) << 16) + ((uint64_t)(p[4]) << 24) +
|
||||
((uint64_t)(p[3]) << 32) + ((uint64_t)(p[2]) << 40) +
|
||||
((uint64_t)(p[1]) << 48) + ((uint64_t)(p[0]) << 56));
|
||||
}
|
||||
|
||||
static inline void
|
||||
be64enc(void *pp, uint64_t x)
|
||||
{
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
|
||||
p[7] = x & 0xff;
|
||||
p[6] = (x >> 8) & 0xff;
|
||||
p[5] = (x >> 16) & 0xff;
|
||||
p[4] = (x >> 24) & 0xff;
|
||||
p[3] = (x >> 32) & 0xff;
|
||||
p[2] = (x >> 40) & 0xff;
|
||||
p[1] = (x >> 48) & 0xff;
|
||||
p[0] = (x >> 56) & 0xff;
|
||||
p[7] = x & 0xff;
|
||||
p[6] = (x >> 8) & 0xff;
|
||||
p[5] = (x >> 16) & 0xff;
|
||||
p[4] = (x >> 24) & 0xff;
|
||||
p[3] = (x >> 32) & 0xff;
|
||||
p[2] = (x >> 40) & 0xff;
|
||||
p[1] = (x >> 48) & 0xff;
|
||||
p[0] = (x >> 56) & 0xff;
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
le32dec(const void *pp)
|
||||
{
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
|
||||
return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) +
|
||||
((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24));
|
||||
return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) +
|
||||
((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24));
|
||||
}
|
||||
|
||||
static inline void
|
||||
le32enc(void *pp, uint32_t x)
|
||||
{
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
|
||||
p[0] = x & 0xff;
|
||||
p[1] = (x >> 8) & 0xff;
|
||||
p[2] = (x >> 16) & 0xff;
|
||||
p[3] = (x >> 24) & 0xff;
|
||||
p[0] = x & 0xff;
|
||||
p[1] = (x >> 8) & 0xff;
|
||||
p[2] = (x >> 16) & 0xff;
|
||||
p[3] = (x >> 24) & 0xff;
|
||||
}
|
||||
|
||||
static inline uint64_t
|
||||
le64dec(const void *pp)
|
||||
{
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
const uint8_t *p = (uint8_t const *)pp;
|
||||
|
||||
return ((uint64_t)(p[0]) + ((uint64_t)(p[1]) << 8) +
|
||||
((uint64_t)(p[2]) << 16) + ((uint64_t)(p[3]) << 24) +
|
||||
((uint64_t)(p[4]) << 32) + ((uint64_t)(p[5]) << 40) +
|
||||
((uint64_t)(p[6]) << 48) + ((uint64_t)(p[7]) << 56));
|
||||
return ((uint64_t)(p[0]) + ((uint64_t)(p[1]) << 8) +
|
||||
((uint64_t)(p[2]) << 16) + ((uint64_t)(p[3]) << 24) +
|
||||
((uint64_t)(p[4]) << 32) + ((uint64_t)(p[5]) << 40) +
|
||||
((uint64_t)(p[6]) << 48) + ((uint64_t)(p[7]) << 56));
|
||||
}
|
||||
|
||||
static inline void
|
||||
le64enc(void *pp, uint64_t x)
|
||||
{
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
uint8_t * p = (uint8_t *)pp;
|
||||
|
||||
p[0] = x & 0xff;
|
||||
p[1] = (x >> 8) & 0xff;
|
||||
p[2] = (x >> 16) & 0xff;
|
||||
p[3] = (x >> 24) & 0xff;
|
||||
p[4] = (x >> 32) & 0xff;
|
||||
p[5] = (x >> 40) & 0xff;
|
||||
p[6] = (x >> 48) & 0xff;
|
||||
p[7] = (x >> 56) & 0xff;
|
||||
p[0] = x & 0xff;
|
||||
p[1] = (x >> 8) & 0xff;
|
||||
p[2] = (x >> 16) & 0xff;
|
||||
p[3] = (x >> 24) & 0xff;
|
||||
p[4] = (x >> 32) & 0xff;
|
||||
p[5] = (x >> 40) & 0xff;
|
||||
p[6] = (x >> 48) & 0xff;
|
||||
p[7] = (x >> 56) & 0xff;
|
||||
}
|
||||
#endif /* !HAVE_SYS_ENDIAN_H */
|
||||
|
||||
|
|
|
@ -46,30 +46,30 @@ const char * warn_progname = "(null)";
|
|||
void
|
||||
warn(const char * fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
fprintf(stderr, "%s", warn_progname);
|
||||
if (fmt != NULL) {
|
||||
fprintf(stderr, ": ");
|
||||
vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
fprintf(stderr, ": %s\n", strerror(errno));
|
||||
va_end(ap);
|
||||
va_start(ap, fmt);
|
||||
fprintf(stderr, "%s", warn_progname);
|
||||
if (fmt != NULL) {
|
||||
fprintf(stderr, ": ");
|
||||
vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
fprintf(stderr, ": %s\n", strerror(errno));
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
void
|
||||
warnx(const char * fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
fprintf(stderr, "%s", warn_progname);
|
||||
if (fmt != NULL) {
|
||||
fprintf(stderr, ": ");
|
||||
vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
va_end(ap);
|
||||
va_start(ap, fmt);
|
||||
fprintf(stderr, "%s", warn_progname);
|
||||
if (fmt != NULL) {
|
||||
fprintf(stderr, ": ");
|
||||
vfprintf(stderr, fmt, ap);
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
va_end(ap);
|
||||
}
|
||||
#endif
|
||||
|
|
Reference in a new issue