Skip to content
This repository has been archived by the owner on Apr 19, 2021. It is now read-only.

Commit

Permalink
added lyra2z algo
Browse files Browse the repository at this point in the history
  • Loading branch information
brakmic committed Jul 9, 2018
1 parent 37a2622 commit 14350a6
Show file tree
Hide file tree
Showing 15 changed files with 4,795 additions and 13 deletions.
4 changes: 2 additions & 2 deletions configure.ac
Expand Up @@ -119,7 +119,7 @@ AC_ARG_ENABLE([upnp-default],
AC_ARG_ENABLE(tests, AC_ARG_ENABLE(tests,
AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]), AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
[use_tests=$enableval], [use_tests=$enableval],
[use_tests=yes]) [use_tests=no])


AC_ARG_ENABLE(gui-tests, AC_ARG_ENABLE(gui-tests,
AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]), AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
Expand All @@ -129,7 +129,7 @@ AC_ARG_ENABLE(gui-tests,
AC_ARG_ENABLE(bench, AC_ARG_ENABLE(bench,
AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]), AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
[use_bench=$enableval], [use_bench=$enableval],
[use_bench=yes]) [use_bench=no])


AC_ARG_ENABLE([extended-functional-tests], AC_ARG_ENABLE([extended-functional-tests],
AS_HELP_STRING([--enable-extended-functional-tests],[enable expensive functional tests when using lcov (default no)]), AS_HELP_STRING([--enable-extended-functional-tests],[enable expensive functional tests when using lcov (default no)]),
Expand Down
14 changes: 10 additions & 4 deletions src/Makefile.am
Expand Up @@ -268,13 +268,20 @@ crypto_libbitcoin_crypto_a_SOURCES = \
crypto/hmac_sha256.h \ crypto/hmac_sha256.h \
crypto/hmac_sha512.cpp \ crypto/hmac_sha512.cpp \
crypto/hmac_sha512.h \ crypto/hmac_sha512.h \
crypto/Lyra2Z/Lyra2.h \
crypto/Lyra2Z/Lyra2.c \
crypto/Lyra2Z/Lyra2Z.h \
crypto/Lyra2Z/Lyra2Z.c \
crypto/Lyra2Z/blake.c \
crypto/Lyra2Z/sph_blake.h \
crypto/Lyra2Z/sph_types.h \
crypto/Lyra2Z/Sponge.c \
crypto/Lyra2Z/Sponge.h \
crypto/ripemd160.cpp \ crypto/ripemd160.cpp \
crypto/ripemd160.h \ crypto/ripemd160.h \
crypto/scrypt.cpp \ crypto/scrypt.cpp \
crypto/scrypt-sse2.cpp \ crypto/scrypt-sse2.cpp \
crypto/scrypt.h \ crypto/scrypt.h \
crypto/neoscrypt.c \
crypto/neoscrypt.h \
crypto/sha1.cpp \ crypto/sha1.cpp \
crypto/sha1.h \ crypto/sha1.h \
crypto/sha256.cpp \ crypto/sha256.cpp \
Expand All @@ -283,8 +290,7 @@ crypto_libbitcoin_crypto_a_SOURCES = \
crypto/sha512.h crypto/sha512.h


if USE_ASM if USE_ASM
crypto_libbitcoin_crypto_a_SOURCES += crypto/sha256_sse4.cpp \ crypto_libbitcoin_crypto_a_SOURCES += crypto/sha256_sse4.cpp
crypto/neoscrypt_asm.S
endif endif


# consensus: shared between all executables that validate any consensus rules. # consensus: shared between all executables that validate any consensus rules.
Expand Down
2 changes: 1 addition & 1 deletion src/chainparams.cpp
Expand Up @@ -187,7 +187,7 @@ class CTestNetParams : public CChainParams {
consensus.BIP34Hash = uint256(); consensus.BIP34Hash = uint256();
consensus.BIP65Height = 76; consensus.BIP65Height = 76;
consensus.BIP66Height = 76; consensus.BIP66Height = 76;
consensus.GPUSupportHeight = 190; consensus.GPUSupportHeight = 100;
consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); consensus.powLimit = uint256S("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.nPowTargetTimespan = 3.5 * 24 * 60 * 60; // 3.5 days consensus.nPowTargetTimespan = 3.5 * 24 * 60 * 60; // 3.5 days
consensus.nPowTargetSpacing = 2.5 * 60; consensus.nPowTargetSpacing = 2.5 * 60;
Expand Down
Empty file added src/crypto/Lyra2Z/.dirstamp
Empty file.
382 changes: 382 additions & 0 deletions src/crypto/Lyra2Z/Lyra2.c

Large diffs are not rendered by default.

53 changes: 53 additions & 0 deletions src/crypto/Lyra2Z/Lyra2.h
@@ -0,0 +1,53 @@
/**
* Header file for the Lyra2 Password Hashing Scheme (PHS).
*
* Author: The Lyra PHC team (http://www.lyra-kdf.net/) -- 2014.
*
* This software is hereby placed in the public domain.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''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 AUTHORS 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.
*/
#ifndef LYRA2_H_
#define LYRA2_H_

#include <stdint.h>

typedef unsigned char byte;

//Block length required so Blake2's Initialization Vector (IV) is not overwritten (THIS SHOULD NOT BE MODIFIED)
#define BLOCK_LEN_BLAKE2_SAFE_INT64 8 //512 bits (=64 bytes, =8 uint64_t)
#define BLOCK_LEN_BLAKE2_SAFE_BYTES (BLOCK_LEN_BLAKE2_SAFE_INT64 * 8) //same as above, in bytes


#ifdef BLOCK_LEN_BITS
#define BLOCK_LEN_INT64 (BLOCK_LEN_BITS/64) //Block length: 768 bits (=96 bytes, =12 uint64_t)
#define BLOCK_LEN_BYTES (BLOCK_LEN_BITS/8) //Block length, in bytes
#else //default block lenght: 768 bits
#define BLOCK_LEN_INT64 12 //Block length: 768 bits (=96 bytes, =12 uint64_t)
#define BLOCK_LEN_BYTES (BLOCK_LEN_INT64 * 8) //Block length, in bytes
#endif

#ifdef __cplusplus
extern "C" {
#endif

int LYRA2(void *K, uint64_t kLen, const void *pwd, uint64_t pwdlen, const void *salt, uint64_t saltlen, uint64_t timeCost, uint64_t nRows, uint64_t nCols);

#ifdef __cplusplus
}

int LYRA2_old(void *K, uint64_t kLen, const void *pwd, uint64_t pwdlen, const void *salt, uint64_t saltlen, uint64_t timeCost, uint64_t nRows, uint64_t nCols);

#endif

#endif /* LYRA2_H_ */
52 changes: 52 additions & 0 deletions src/crypto/Lyra2Z/Lyra2Z.c
@@ -0,0 +1,52 @@
/*-
* Copyright 2009 Colin Percival, 2011 ArtForz, 2013 Neisklar, 2017 Zcoin Developers
* 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 GOODSPushVersion
* 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 "Lyra2Z.h"
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include "sph_blake.h"
#include "Lyra2.h"

void lyra2z_hash(const char* input, char* output)
{
sph_blake256_context ctx_blake;

uint32_t hashA[8], hashB[8];

sph_blake256_init(&ctx_blake);
sph_blake256 (&ctx_blake, input, 80);
sph_blake256_close (&ctx_blake, hashA);

LYRA2(hashB, 32, hashA, 32, hashA, 32, 8, 8, 8);

memcpy(output, hashB, 32);
}

14 changes: 14 additions & 0 deletions src/crypto/Lyra2Z/Lyra2Z.h
@@ -0,0 +1,14 @@
#ifndef LYRA2RE_H
#define LYRA2RE_H

#ifdef __cplusplus
extern "C" {
#endif

void lyra2z_hash(const char* input, char* output);

#ifdef __cplusplus
}
#endif

#endif

0 comments on commit 14350a6

Please sign in to comment.