diff --git a/Makefile.in b/Makefile.in index 562e63b..9c16a27 100644 --- a/Makefile.in +++ b/Makefile.in @@ -52,7 +52,7 @@ PROGRAMS = $(bin_PROGRAMS) am_scrypt_OBJECTS = scrypt-main.$(OBJEXT) scrypt-memlimit.$(OBJEXT) \ scrypt-readpass.$(OBJEXT) scrypt-warn.$(OBJEXT) \ scrypt-genpass.$(OBJEXT) \ - scrypt-crypto_aesctr.$(OBJEXT) scrypt-sha256.$(OBJEXT) \ + scrypt-sha256.$(OBJEXT) \ scrypt-crypto_scrypt-@SCRYPTVER@.$(OBJEXT) scrypt_OBJECTS = $(am_scrypt_OBJECTS) scrypt_DEPENDENCIES = @@ -178,7 +178,6 @@ scrypt_SOURCES = main.c \ lib/util/readpass.c \ lib/util/warn.c \ lib/genpass/genpass.c \ - lib/crypto/crypto_aesctr.c \ lib/crypto/sha256.c \ lib/crypto/crypto_scrypt-@SCRYPTVER@.c @@ -273,7 +272,6 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scrypt-crypto_aesctr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scrypt-crypto_scrypt-@SCRYPTVER@.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scrypt-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scrypt-memlimit.Po@am__quote@ @@ -366,20 +364,6 @@ scrypt-genpass.obj: lib/genpass/genpass.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(scrypt_CFLAGS) $(CFLAGS) -c -o scrypt-genpass.obj `if test -f 'lib/genpass/genpass.c'; then $(CYGPATH_W) 'lib/genpass/genpass.c'; else $(CYGPATH_W) '$(srcdir)/lib/genpass/genpass.c'; fi` -scrypt-crypto_aesctr.o: lib/crypto/crypto_aesctr.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(scrypt_CFLAGS) $(CFLAGS) -MT scrypt-crypto_aesctr.o -MD -MP -MF $(DEPDIR)/scrypt-crypto_aesctr.Tpo -c -o scrypt-crypto_aesctr.o `test -f 'lib/crypto/crypto_aesctr.c' || echo '$(srcdir)/'`lib/crypto/crypto_aesctr.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/scrypt-crypto_aesctr.Tpo $(DEPDIR)/scrypt-crypto_aesctr.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/crypto/crypto_aesctr.c' object='scrypt-crypto_aesctr.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(scrypt_CFLAGS) $(CFLAGS) -c -o scrypt-crypto_aesctr.o `test -f 'lib/crypto/crypto_aesctr.c' || echo '$(srcdir)/'`lib/crypto/crypto_aesctr.c - -scrypt-crypto_aesctr.obj: lib/crypto/crypto_aesctr.c -@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(scrypt_CFLAGS) $(CFLAGS) -MT scrypt-crypto_aesctr.obj -MD -MP -MF $(DEPDIR)/scrypt-crypto_aesctr.Tpo -c -o scrypt-crypto_aesctr.obj `if test -f 'lib/crypto/crypto_aesctr.c'; then $(CYGPATH_W) 'lib/crypto/crypto_aesctr.c'; else $(CYGPATH_W) '$(srcdir)/lib/crypto/crypto_aesctr.c'; fi` -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/scrypt-crypto_aesctr.Tpo $(DEPDIR)/scrypt-crypto_aesctr.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib/crypto/crypto_aesctr.c' object='scrypt-crypto_aesctr.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(scrypt_CFLAGS) $(CFLAGS) -c -o scrypt-crypto_aesctr.obj `if test -f 'lib/crypto/crypto_aesctr.c'; then $(CYGPATH_W) 'lib/crypto/crypto_aesctr.c'; else $(CYGPATH_W) '$(srcdir)/lib/crypto/crypto_aesctr.c'; fi` - scrypt-sha256.o: lib/crypto/sha256.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(scrypt_CFLAGS) $(CFLAGS) -MT scrypt-sha256.o -MD -MP -MF $(DEPDIR)/scrypt-sha256.Tpo -c -o scrypt-sha256.o `test -f 'lib/crypto/sha256.c' || echo '$(srcdir)/'`lib/crypto/sha256.c @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/scrypt-sha256.Tpo $(DEPDIR)/scrypt-sha256.Po diff --git a/lib/crypto/crypto_aesctr.c b/lib/crypto/crypto_aesctr.c deleted file mode 100644 index 00db8f0..0000000 --- a/lib/crypto/crypto_aesctr.c +++ /dev/null @@ -1,124 +0,0 @@ -/*- - * Copyright 2007-2009 Colin Percival - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file was originally written by Colin Percival as part of the Tarsnap - * online backup system. - */ -#include "scrypt_platform.h" - -#include -#include - -#include - -#include "sysendian.h" - -#include "crypto_aesctr.h" - -struct crypto_aesctr { - AES_KEY * key; - uint64_t nonce; - uint64_t bytectr; - uint8_t buf[16]; -}; - -/** - * crypto_aesctr_init(key, nonce): - * Prepare to encrypt/decrypt data with AES in CTR mode, using the provided - * expanded key and nonce. The key provided must remain valid for the - * lifetime of the stream. - */ -struct crypto_aesctr * -crypto_aesctr_init(AES_KEY * key, uint64_t nonce) -{ - struct crypto_aesctr * stream; - - /* Allocate memory. */ - if ((stream = malloc(sizeof(struct crypto_aesctr))) == NULL) - goto err0; - - /* Initialize values. */ - stream->key = key; - stream->nonce = nonce; - stream->bytectr = 0; - - /* Success! */ - return (stream); - -err0: - /* Failure! */ - return (NULL); -} - -/** - * crypto_aesctr_stream(stream, inbuf, outbuf, buflen): - * Generate the next ${buflen} bytes of the AES-CTR stream and xor them with - * bytes from ${inbuf}, writing the result into ${outbuf}. If the buffers - * ${inbuf} and ${outbuf} overlap, they must be identical. - */ -void -crypto_aesctr_stream(struct crypto_aesctr * stream, const uint8_t * inbuf, - uint8_t * outbuf, size_t buflen) -{ - uint8_t pblk[16]; - size_t pos; - int bytemod; - - for (pos = 0; pos < buflen; pos++) { - /* How far through the buffer are we? */ - bytemod = stream->bytectr % 16; - - /* Generate a block of cipherstream if needed. */ - if (bytemod == 0) { - be64enc(pblk, stream->nonce); - be64enc(pblk + 8, stream->bytectr / 16); - AES_encrypt(pblk, stream->buf, stream->key); - } - - /* Encrypt a byte. */ - outbuf[pos] = inbuf[pos] ^ stream->buf[bytemod]; - - /* Move to the next byte of cipherstream. */ - stream->bytectr += 1; - } -} - -/** - * crypto_aesctr_free(stream): - * Free the provided stream object. - */ -void -crypto_aesctr_free(struct crypto_aesctr * stream) -{ - int i; - - /* Zero potentially sensitive information. */ - for (i = 0; i < 16; i++) - stream->buf[i] = 0; - stream->bytectr = stream->nonce = 0; - - /* Free the stream. */ - free(stream); -} diff --git a/lib/crypto/crypto_aesctr.h b/lib/crypto/crypto_aesctr.h deleted file mode 100644 index b50398f..0000000 --- a/lib/crypto/crypto_aesctr.h +++ /dev/null @@ -1,59 +0,0 @@ -/*- - * Copyright 2009 Colin Percival - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file was originally written by Colin Percival as part of the Tarsnap - * online backup system. - */ -#ifndef _CRYPTO_AESCTR_H_ -#define _CRYPTO_AESCTR_H_ - -#include - -#include - -/** - * crypto_aesctr_init(key, nonce): - * Prepare to encrypt/decrypt data with AES in CTR mode, using the provided - * expanded key and nonce. The key provided must remain valid for the - * lifetime of the stream. - */ -struct crypto_aesctr * crypto_aesctr_init(AES_KEY *, uint64_t); - -/** - * crypto_aesctr_stream(stream, inbuf, outbuf, buflen): - * Generate the next ${buflen} bytes of the AES-CTR stream and xor them with - * bytes from ${inbuf}, writing the result into ${outbuf}. If the buffers - * ${inbuf} and ${outbuf} overlap, they must be identical. - */ -void crypto_aesctr_stream(struct crypto_aesctr *, const uint8_t *, - uint8_t *, size_t); - -/** - * crypto_aesctr_free(stream): - * Free the provided stream object. - */ -void crypto_aesctr_free(struct crypto_aesctr *); - -#endif /* !_CRYPTO_AESCTR_H_ */ diff --git a/lib/genpass/genpass.c b/lib/genpass/genpass.c index 99fc50d..f2b9e0f 100644 --- a/lib/genpass/genpass.c +++ b/lib/genpass/genpass.c @@ -37,7 +37,6 @@ #include -#include "crypto_aesctr.h" #include "crypto_scrypt.h" #include "memlimit.h" #include "sha256.h"