Add Makefile, make C89 compliant

This commit is contained in:
Travis Burtrum 2019-12-25 09:45:47 -05:00
parent 919deb473d
commit 2d1b9a3942
2 changed files with 21 additions and 14 deletions

7
Makefile Normal file
View File

@ -0,0 +1,7 @@
pegh : pegh.c
cc -Wall -Wextra -Werror -std=c89 -pedantic \
-Wstrict-prototypes -Wold-style-definition \
pegh.c -lcrypto -O3 -o pegh
clean :
rm -f pegh

28
pegh.c
View File

@ -17,7 +17,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// compile with: gcc pegh.c -lcrypto -O3 -o pegh
/* compile with: cc pegh.c -lcrypto -O3 -o pegh */
#include <openssl/conf.h>
#include <openssl/evp.h>
@ -37,21 +37,21 @@
#define SCRYPT_N 32768
#define SCRYPT_R 8
#define SCRYPT_P 1
#define SCRYPT_MAX_MEM (1024 * 1024 * 64) // 64mb, must be sufficient for N
#define SCRYPT_MAX_MEM (1024 * 1024 * 64) /* 64mb, must be sufficient for N */
// tweak initial read buffer size/reads here
#define BYTES_PER_READ (1024 * 32) // 32kb
#define INITIAL_BUFFER_SIZE (1024 * 256) // 256kb, must be at least 2*BYTES_PER_READ
/* tweak initial read buffer size/reads here */
#define BYTES_PER_READ (1024 * 32) /* 32kb */
#define INITIAL_BUFFER_SIZE (1024 * 256) /* 256kb, must be at least 2*BYTES_PER_READ */
// don't touch below here unless you know what you are doing
/* don't touch below here unless you know what you are doing */
#define KEY_LEN 32 // 256 bit key required for AES-256
#define KEY_LEN 32 /* 256 bit key required for AES-256 */
// 1 for file format version, 4 for N, 1 for r, 1 for p
/* 1 for file format version, 4 for N, 1 for r, 1 for p */
#define PRE_SALT_LEN 7
// from libsodium's crypto_pwhash_scryptsalsa208sha256_SALTBYTES
/* from libsodium's crypto_pwhash_scryptsalsa208sha256_SALTBYTES */
#define SALT_LEN 32
// AES-GCM should only ever have an IV_LEN of 12
/* AES-GCM should only ever have an IV_LEN of 12 */
#define IV_LEN 12
#define GCM_TAG_LEN 16
@ -194,7 +194,7 @@ int main(int argc, char **argv)
{
unsigned char key[KEY_LEN] = {0};
/* these are actually mallocd and freed */
unsigned char *in_buffer, *out_buffer;
unsigned char *in_buffer, *out_buffer = NULL;
/* these are simply pointers into the above */
unsigned char *salt, *iv, *ciphertext, *plaintext, *tag;
int exit_code = 2, decrypt = 1;
@ -208,7 +208,7 @@ int main(int argc, char **argv)
return exit_code;
}
// this means we want to encrypt, not decrypt
/* this means we want to encrypt, not decrypt */
if (argc > 2 && strcmp("enc", argv[2]) == 0)
decrypt = 0;
@ -268,7 +268,7 @@ int main(int argc, char **argv)
out_buffer[5] = r;
out_buffer[6] = p;
salt = out_buffer + PRE_SALT_LEN;
// generate random salt
/* generate random salt+iv */
if (RAND_bytes(salt, SALT_IV_LEN) <= 0) {
fprintf(stderr, "random salt+iv generation error\n");
exit_code = 1;
@ -311,7 +311,7 @@ int main(int argc, char **argv)
break;
}
}
// success!
/* success! */
fwrite(out_buffer, 1, out_buffer_len, stdout);
exit_code = 0;
} while(0);