mirror of
https://codeberg.org/scip/pcp.git
synced 2025-12-17 12:00:56 +01:00
changed key derivation function, using scrypt (from tarsnap) now instead of my own derivation function
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
|
|||||||
6
aclocal.m4
vendored
6
aclocal.m4
vendored
@@ -1,4 +1,4 @@
|
|||||||
# generated automatically by aclocal 1.12.4 -*- Autoconf -*-
|
# generated automatically by aclocal 1.12.6 -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
|
|||||||
[am__api_version='1.12'
|
[am__api_version='1.12'
|
||||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||||
dnl require some minimum version. Point them to the right macro.
|
dnl require some minimum version. Point them to the right macro.
|
||||||
m4_if([$1], [1.12.4], [],
|
m4_if([$1], [1.12.6], [],
|
||||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
|||||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||||
[AM_AUTOMAKE_VERSION([1.12.4])dnl
|
[AM_AUTOMAKE_VERSION([1.12.6])dnl
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#
|
#
|
||||||
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
#
|
#
|
||||||
AM_CXXFLAGS = -I../../include -Wall -g
|
AM_CXXFLAGS = -I../../include -I../../libpcp/scrypt/crypto -I../../libpcp/scrypt/util -Wall -g
|
||||||
|
|
||||||
lib_LTLIBRARIES = libpcp1++.la
|
lib_LTLIBRARIES = libpcp1++.la
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
@@ -270,7 +270,7 @@ top_srcdir = @top_srcdir@
|
|||||||
#
|
#
|
||||||
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
#
|
#
|
||||||
AM_CXXFLAGS = -I../../include -Wall -g
|
AM_CXXFLAGS = -I../../include -I../../libpcp/scrypt/crypto -I../../libpcp/scrypt/util -Wall -g
|
||||||
lib_LTLIBRARIES = libpcp1++.la
|
lib_LTLIBRARIES = libpcp1++.la
|
||||||
libpcp1___la_SOURCES = pcp++.h key.cpp vault.cpp crypto.cpp sign.cpp
|
libpcp1___la_SOURCES = pcp++.h key.cpp vault.cpp crypto.cpp sign.cpp
|
||||||
include_HEADERS = pcp++.h
|
include_HEADERS = pcp++.h
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Wrapper for compilers which do not understand '-c -o'.
|
# Wrapper for compilers which do not understand '-c -o'.
|
||||||
|
|
||||||
scriptversion=2012-03-05.13; # UTC
|
scriptversion=2012-10-14.11; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
||||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||||
@@ -112,6 +112,11 @@ func_cl_dashl ()
|
|||||||
lib=$dir/$lib.lib
|
lib=$dir/$lib.lib
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
if test -f "$dir/lib$lib.a"; then
|
||||||
|
found=yes
|
||||||
|
lib=$dir/lib$lib.a
|
||||||
|
break
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
IFS=$save_IFS
|
IFS=$save_IFS
|
||||||
|
|
||||||
|
|||||||
1100
config/config.guess
vendored
1100
config/config.guess
vendored
File diff suppressed because it is too large
Load Diff
522
config/config.sub
vendored
522
config/config.sub
vendored
@@ -1,42 +1,40 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright 1992-2013 Free Software Foundation, Inc.
|
||||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
timestamp='2003-07-04'
|
timestamp='2013-04-24'
|
||||||
|
|
||||||
# This file is (in principle) common to ALL GNU software.
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# The presence of a machine in this file suggests that SOME GNU software
|
# under the terms of the GNU General Public License as published by
|
||||||
# can handle that machine. It does not imply ALL GNU software can.
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
#
|
|
||||||
# This file is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful, but
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
# GNU General Public License for more details.
|
# General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
# Foundation, Inc., 59 Temple Place - Suite 330,
|
#
|
||||||
# Boston, MA 02111-1307, USA.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
# configuration script generated by Autoconf, you may include it under
|
# configuration script generated by Autoconf, you may include it under
|
||||||
# the same distribution terms that you use for the rest of that program.
|
# the same distribution terms that you use for the rest of that
|
||||||
|
# program. This Exception is an additional permission under section 7
|
||||||
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
|
|
||||||
# Please send patches to <config-patches@gnu.org>. Submit a context
|
|
||||||
# diff and a properly formatted ChangeLog entry.
|
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
||||||
#
|
#
|
||||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||||
# Supply the specified configuration type as an argument.
|
# Supply the specified configuration type as an argument.
|
||||||
# If it is invalid, we print an error message on stderr and exit with code 1.
|
# If it is invalid, we print an error message on stderr and exit with code 1.
|
||||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||||
|
|
||||||
|
# You can get the latest version of this script from:
|
||||||
|
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||||
|
|
||||||
# This file is supposed to be the same for all GNU packages
|
# This file is supposed to be the same for all GNU packages
|
||||||
# and recognize all the CPU types, system types and aliases
|
# and recognize all the CPU types, system types and aliases
|
||||||
# that are meaningful with *any* GNU software.
|
# that are meaningful with *any* GNU software.
|
||||||
@@ -70,8 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
Copyright 1992-2013 Free Software Foundation, Inc.
|
||||||
Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@@ -83,11 +80,11 @@ Try \`$me --help' for more information."
|
|||||||
while test $# -gt 0 ; do
|
while test $# -gt 0 ; do
|
||||||
case $1 in
|
case $1 in
|
||||||
--time-stamp | --time* | -t )
|
--time-stamp | --time* | -t )
|
||||||
echo "$timestamp" ; exit 0 ;;
|
echo "$timestamp" ; exit ;;
|
||||||
--version | -v )
|
--version | -v )
|
||||||
echo "$version" ; exit 0 ;;
|
echo "$version" ; exit ;;
|
||||||
--help | --h* | -h )
|
--help | --h* | -h )
|
||||||
echo "$usage"; exit 0 ;;
|
echo "$usage"; exit ;;
|
||||||
-- ) # Stop option processing
|
-- ) # Stop option processing
|
||||||
shift; break ;;
|
shift; break ;;
|
||||||
- ) # Use stdin as input.
|
- ) # Use stdin as input.
|
||||||
@@ -99,7 +96,7 @@ while test $# -gt 0 ; do
|
|||||||
*local*)
|
*local*)
|
||||||
# First pass through any local machine types.
|
# First pass through any local machine types.
|
||||||
echo $1
|
echo $1
|
||||||
exit 0;;
|
exit ;;
|
||||||
|
|
||||||
* )
|
* )
|
||||||
break ;;
|
break ;;
|
||||||
@@ -118,10 +115,18 @@ esac
|
|||||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||||
|
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||||
|
knetbsd*-gnu* | netbsd*-gnu* | \
|
||||||
|
kopensolaris*-gnu* | \
|
||||||
|
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||||
os=-$maybe_os
|
os=-$maybe_os
|
||||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||||
;;
|
;;
|
||||||
|
android-linux)
|
||||||
|
os=-linux-android
|
||||||
|
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||||
if [ $basic_machine != $1 ]
|
if [ $basic_machine != $1 ]
|
||||||
@@ -144,10 +149,13 @@ case $os in
|
|||||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||||
-apple | -axis)
|
-apple | -axis | -knuth | -cray | -microblaze*)
|
||||||
os=
|
os=
|
||||||
basic_machine=$1
|
basic_machine=$1
|
||||||
;;
|
;;
|
||||||
|
-bluegene*)
|
||||||
|
os=-cnk
|
||||||
|
;;
|
||||||
-sim | -cisco | -oki | -wec | -winbond)
|
-sim | -cisco | -oki | -wec | -winbond)
|
||||||
os=
|
os=
|
||||||
basic_machine=$1
|
basic_machine=$1
|
||||||
@@ -162,13 +170,17 @@ case $os in
|
|||||||
os=-chorusos
|
os=-chorusos
|
||||||
basic_machine=$1
|
basic_machine=$1
|
||||||
;;
|
;;
|
||||||
-chorusrdb)
|
-chorusrdb)
|
||||||
os=-chorusrdb
|
os=-chorusrdb
|
||||||
basic_machine=$1
|
basic_machine=$1
|
||||||
;;
|
;;
|
||||||
-hiux*)
|
-hiux*)
|
||||||
os=-hiuxwe2
|
os=-hiuxwe2
|
||||||
;;
|
;;
|
||||||
|
-sco6)
|
||||||
|
os=-sco5v6
|
||||||
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
|
;;
|
||||||
-sco5)
|
-sco5)
|
||||||
os=-sco3.2v5
|
os=-sco3.2v5
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
@@ -185,6 +197,10 @@ case $os in
|
|||||||
# Don't forget version if it is 3.2v4 or newer.
|
# Don't forget version if it is 3.2v4 or newer.
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
;;
|
;;
|
||||||
|
-sco5v6*)
|
||||||
|
# Don't forget version if it is 3.2v4 or newer.
|
||||||
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
|
;;
|
||||||
-sco*)
|
-sco*)
|
||||||
os=-sco3.2v2
|
os=-sco3.2v2
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
@@ -202,6 +218,12 @@ case $os in
|
|||||||
-isc*)
|
-isc*)
|
||||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||||
;;
|
;;
|
||||||
|
-lynx*178)
|
||||||
|
os=-lynxos178
|
||||||
|
;;
|
||||||
|
-lynx*5)
|
||||||
|
os=-lynxos5
|
||||||
|
;;
|
||||||
-lynx*)
|
-lynx*)
|
||||||
os=-lynxos
|
os=-lynxos
|
||||||
;;
|
;;
|
||||||
@@ -226,55 +248,106 @@ case $basic_machine in
|
|||||||
# Some are omitted here because they have special meanings below.
|
# Some are omitted here because they have special meanings below.
|
||||||
1750a | 580 \
|
1750a | 580 \
|
||||||
| a29k \
|
| a29k \
|
||||||
|
| aarch64 | aarch64_be \
|
||||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
| am33_2.0 \
|
||||||
|
| arc | arceb \
|
||||||
|
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||||
|
| avr | avr32 \
|
||||||
|
| be32 | be64 \
|
||||||
|
| bfin \
|
||||||
| c4x | clipper \
|
| c4x | clipper \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
| fr30 | frv \
|
| epiphany \
|
||||||
|
| fido | fr30 | frv \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
|
| hexagon \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia64 \
|
||||||
| ip2k \
|
| ip2k | iq2000 \
|
||||||
| m32r | m68000 | m68k | m88k | mcore \
|
| le32 | le64 \
|
||||||
|
| lm32 \
|
||||||
|
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||||
|
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
|
||||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||||
| mips16 \
|
| mips16 \
|
||||||
| mips64 | mips64el \
|
| mips64 | mips64el \
|
||||||
| mips64vr | mips64vrel \
|
| mips64octeon | mips64octeonel \
|
||||||
| mips64orion | mips64orionel \
|
| mips64orion | mips64orionel \
|
||||||
|
| mips64r5900 | mips64r5900el \
|
||||||
|
| mips64vr | mips64vrel \
|
||||||
| mips64vr4100 | mips64vr4100el \
|
| mips64vr4100 | mips64vr4100el \
|
||||||
| mips64vr4300 | mips64vr4300el \
|
| mips64vr4300 | mips64vr4300el \
|
||||||
| mips64vr5000 | mips64vr5000el \
|
| mips64vr5000 | mips64vr5000el \
|
||||||
|
| mips64vr5900 | mips64vr5900el \
|
||||||
| mipsisa32 | mipsisa32el \
|
| mipsisa32 | mipsisa32el \
|
||||||
| mipsisa32r2 | mipsisa32r2el \
|
| mipsisa32r2 | mipsisa32r2el \
|
||||||
| mipsisa64 | mipsisa64el \
|
| mipsisa64 | mipsisa64el \
|
||||||
|
| mipsisa64r2 | mipsisa64r2el \
|
||||||
| mipsisa64sb1 | mipsisa64sb1el \
|
| mipsisa64sb1 | mipsisa64sb1el \
|
||||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||||
|
| mipsr5900 | mipsr5900el \
|
||||||
| mipstx39 | mipstx39el \
|
| mipstx39 | mipstx39el \
|
||||||
| mn10200 | mn10300 \
|
| mn10200 | mn10300 \
|
||||||
|
| moxie \
|
||||||
|
| mt \
|
||||||
| msp430 \
|
| msp430 \
|
||||||
|
| nds32 | nds32le | nds32be \
|
||||||
|
| nios | nios2 | nios2eb | nios2el \
|
||||||
| ns16k | ns32k \
|
| ns16k | ns32k \
|
||||||
| openrisc | or32 \
|
| open8 \
|
||||||
|
| or1k | or32 \
|
||||||
| pdp10 | pdp11 | pj | pjl \
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
|
| rl78 | rx \
|
||||||
|
| score \
|
||||||
|
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||||
| sh64 | sh64le \
|
| sh64 | sh64le \
|
||||||
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
|
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||||
| strongarm \
|
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||||
| tahoe | thumb | tic4x | tic80 | tron \
|
| spu \
|
||||||
| v850 | v850e \
|
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||||
|
| ubicom32 \
|
||||||
|
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | xscale | xstormy16 | xtensa \
|
| x86 | xc16x | xstormy16 | xtensa \
|
||||||
| z8k)
|
| z8k | z80)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
;;
|
;;
|
||||||
m6811 | m68hc11 | m6812 | m68hc12)
|
c54x)
|
||||||
# Motorola 68HC11/12.
|
basic_machine=tic54x-unknown
|
||||||
|
;;
|
||||||
|
c55x)
|
||||||
|
basic_machine=tic55x-unknown
|
||||||
|
;;
|
||||||
|
c6x)
|
||||||
|
basic_machine=tic6x-unknown
|
||||||
|
;;
|
||||||
|
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
os=-none
|
os=-none
|
||||||
;;
|
;;
|
||||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||||
;;
|
;;
|
||||||
|
ms1)
|
||||||
|
basic_machine=mt-unknown
|
||||||
|
;;
|
||||||
|
|
||||||
|
strongarm | thumb | xscale)
|
||||||
|
basic_machine=arm-unknown
|
||||||
|
;;
|
||||||
|
xgate)
|
||||||
|
basic_machine=$basic_machine-unknown
|
||||||
|
os=-none
|
||||||
|
;;
|
||||||
|
xscaleeb)
|
||||||
|
basic_machine=armeb-unknown
|
||||||
|
;;
|
||||||
|
|
||||||
|
xscaleel)
|
||||||
|
basic_machine=armel-unknown
|
||||||
|
;;
|
||||||
|
|
||||||
# We use `pc' rather than `unknown'
|
# We use `pc' rather than `unknown'
|
||||||
# because (1) that's what they normally are, and
|
# because (1) that's what they normally are, and
|
||||||
@@ -290,58 +363,82 @@ case $basic_machine in
|
|||||||
# Recognize the basic CPU types with company name.
|
# Recognize the basic CPU types with company name.
|
||||||
580-* \
|
580-* \
|
||||||
| a29k-* \
|
| a29k-* \
|
||||||
|
| aarch64-* | aarch64_be-* \
|
||||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||||
| alphapca5[67]-* | alpha64pca5[67]-* | amd64-* | arc-* \
|
| alphapca5[67]-* | alpha64pca5[67]-* | amd64-* | arc-* | arceb-* \
|
||||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||||
| avr-* \
|
| avr-* | avr32-* \
|
||||||
| bs2000-* \
|
| be32-* | be64-* \
|
||||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
| bfin-* | bs2000-* \
|
||||||
| clipper-* | cydra-* \
|
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||||
|
| clipper-* | craynv-* | cydra-* \
|
||||||
| d10v-* | d30v-* | dlx-* \
|
| d10v-* | d30v-* | dlx-* \
|
||||||
| elxsi-* \
|
| elxsi-* \
|
||||||
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
|
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||||
| h8300-* | h8500-* \
|
| h8300-* | h8500-* \
|
||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
|
| hexagon-* \
|
||||||
| i*86-* | i860-* | i960-* | ia64-* \
|
| i*86-* | i860-* | i960-* | ia64-* \
|
||||||
| ip2k-* \
|
| ip2k-* | iq2000-* \
|
||||||
| m32r-* \
|
| le32-* | le64-* \
|
||||||
|
| lm32-* \
|
||||||
|
| m32c-* | m32r-* | m32rle-* \
|
||||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||||
| m88110-* | m88k-* | mcore-* \
|
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
|
||||||
|
| microblaze-* | microblazeel-* \
|
||||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||||
| mips16-* \
|
| mips16-* \
|
||||||
| mips64-* | mips64el-* \
|
| mips64-* | mips64el-* \
|
||||||
| mips64vr-* | mips64vrel-* \
|
| mips64octeon-* | mips64octeonel-* \
|
||||||
| mips64orion-* | mips64orionel-* \
|
| mips64orion-* | mips64orionel-* \
|
||||||
|
| mips64r5900-* | mips64r5900el-* \
|
||||||
|
| mips64vr-* | mips64vrel-* \
|
||||||
| mips64vr4100-* | mips64vr4100el-* \
|
| mips64vr4100-* | mips64vr4100el-* \
|
||||||
| mips64vr4300-* | mips64vr4300el-* \
|
| mips64vr4300-* | mips64vr4300el-* \
|
||||||
| mips64vr5000-* | mips64vr5000el-* \
|
| mips64vr5000-* | mips64vr5000el-* \
|
||||||
|
| mips64vr5900-* | mips64vr5900el-* \
|
||||||
| mipsisa32-* | mipsisa32el-* \
|
| mipsisa32-* | mipsisa32el-* \
|
||||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||||
| mipsisa64-* | mipsisa64el-* \
|
| mipsisa64-* | mipsisa64el-* \
|
||||||
|
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||||
|
| mipsr5900-* | mipsr5900el-* \
|
||||||
| mipstx39-* | mipstx39el-* \
|
| mipstx39-* | mipstx39el-* \
|
||||||
|
| mmix-* \
|
||||||
|
| mt-* \
|
||||||
| msp430-* \
|
| msp430-* \
|
||||||
| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
|
| nds32-* | nds32le-* | nds32be-* \
|
||||||
|
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||||
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||||
|
| open8-* \
|
||||||
| orion-* \
|
| orion-* \
|
||||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||||
| pyramid-* \
|
| pyramid-* \
|
||||||
| romp-* | rs6000-* \
|
| rl78-* | romp-* | rs6000-* | rx-* \
|
||||||
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
|
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||||
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
|
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||||
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
|
| sparclite-* \
|
||||||
| tahoe-* | thumb-* \
|
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
|
||||||
|
| tahoe-* \
|
||||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||||
|
| tile*-* \
|
||||||
| tron-* \
|
| tron-* \
|
||||||
| v850-* | v850e-* | vax-* \
|
| ubicom32-* \
|
||||||
|
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||||
|
| vax-* \
|
||||||
| we32k-* \
|
| we32k-* \
|
||||||
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
|
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||||
| xtensa-* \
|
| xstormy16-* | xtensa*-* \
|
||||||
| ymp-* \
|
| ymp-* \
|
||||||
| z8k-*)
|
| z8k-* | z80-*)
|
||||||
|
;;
|
||||||
|
# Recognize the basic CPU types without company name, with glob match.
|
||||||
|
xtensa*)
|
||||||
|
basic_machine=$basic_machine-unknown
|
||||||
;;
|
;;
|
||||||
# Recognize the various machine names and aliases which stand
|
# Recognize the various machine names and aliases which stand
|
||||||
# for a CPU type and a company and sometimes even an OS.
|
# for a CPU type and a company and sometimes even an OS.
|
||||||
@@ -359,6 +456,9 @@ case $basic_machine in
|
|||||||
basic_machine=a29k-amd
|
basic_machine=a29k-amd
|
||||||
os=-udi
|
os=-udi
|
||||||
;;
|
;;
|
||||||
|
abacus)
|
||||||
|
basic_machine=abacus-unknown
|
||||||
|
;;
|
||||||
adobe68k)
|
adobe68k)
|
||||||
basic_machine=m68010-adobe
|
basic_machine=m68010-adobe
|
||||||
os=-scout
|
os=-scout
|
||||||
@@ -373,9 +473,6 @@ case $basic_machine in
|
|||||||
basic_machine=a29k-none
|
basic_machine=a29k-none
|
||||||
os=-bsd
|
os=-bsd
|
||||||
;;
|
;;
|
||||||
amd64)
|
|
||||||
basic_machine=x86_64-pc
|
|
||||||
;;
|
|
||||||
amdahl)
|
amdahl)
|
||||||
basic_machine=580-amdahl
|
basic_machine=580-amdahl
|
||||||
os=-sysv
|
os=-sysv
|
||||||
@@ -399,6 +496,10 @@ case $basic_machine in
|
|||||||
basic_machine=m68k-apollo
|
basic_machine=m68k-apollo
|
||||||
os=-bsd
|
os=-bsd
|
||||||
;;
|
;;
|
||||||
|
aros)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-aros
|
||||||
|
;;
|
||||||
aux)
|
aux)
|
||||||
basic_machine=m68k-apple
|
basic_machine=m68k-apple
|
||||||
os=-aux
|
os=-aux
|
||||||
@@ -407,10 +508,35 @@ case $basic_machine in
|
|||||||
basic_machine=ns32k-sequent
|
basic_machine=ns32k-sequent
|
||||||
os=-dynix
|
os=-dynix
|
||||||
;;
|
;;
|
||||||
|
blackfin)
|
||||||
|
basic_machine=bfin-unknown
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
|
blackfin-*)
|
||||||
|
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
|
bluegene*)
|
||||||
|
basic_machine=powerpc-ibm
|
||||||
|
os=-cnk
|
||||||
|
;;
|
||||||
|
c54x-*)
|
||||||
|
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
|
c55x-*)
|
||||||
|
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
|
c6x-*)
|
||||||
|
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
c90)
|
c90)
|
||||||
basic_machine=c90-cray
|
basic_machine=c90-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
;;
|
;;
|
||||||
|
cegcc)
|
||||||
|
basic_machine=arm-unknown
|
||||||
|
os=-cegcc
|
||||||
|
;;
|
||||||
convex-c1)
|
convex-c1)
|
||||||
basic_machine=c1-convex
|
basic_machine=c1-convex
|
||||||
os=-bsd
|
os=-bsd
|
||||||
@@ -435,12 +561,27 @@ case $basic_machine in
|
|||||||
basic_machine=j90-cray
|
basic_machine=j90-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
;;
|
;;
|
||||||
|
craynv)
|
||||||
|
basic_machine=craynv-cray
|
||||||
|
os=-unicosmp
|
||||||
|
;;
|
||||||
|
cr16 | cr16-*)
|
||||||
|
basic_machine=cr16-unknown
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
crds | unos)
|
crds | unos)
|
||||||
basic_machine=m68k-crds
|
basic_machine=m68k-crds
|
||||||
;;
|
;;
|
||||||
|
crisv32 | crisv32-* | etraxfs*)
|
||||||
|
basic_machine=crisv32-axis
|
||||||
|
;;
|
||||||
cris | cris-* | etrax*)
|
cris | cris-* | etrax*)
|
||||||
basic_machine=cris-axis
|
basic_machine=cris-axis
|
||||||
;;
|
;;
|
||||||
|
crx)
|
||||||
|
basic_machine=crx-unknown
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
da30 | da30-*)
|
da30 | da30-*)
|
||||||
basic_machine=m68k-da30
|
basic_machine=m68k-da30
|
||||||
;;
|
;;
|
||||||
@@ -463,6 +604,14 @@ case $basic_machine in
|
|||||||
basic_machine=m88k-motorola
|
basic_machine=m88k-motorola
|
||||||
os=-sysv3
|
os=-sysv3
|
||||||
;;
|
;;
|
||||||
|
dicos)
|
||||||
|
basic_machine=i686-pc
|
||||||
|
os=-dicos
|
||||||
|
;;
|
||||||
|
djgpp)
|
||||||
|
basic_machine=i586-pc
|
||||||
|
os=-msdosdjgpp
|
||||||
|
;;
|
||||||
dpx20 | dpx20-*)
|
dpx20 | dpx20-*)
|
||||||
basic_machine=rs6000-bull
|
basic_machine=rs6000-bull
|
||||||
os=-bosx
|
os=-bosx
|
||||||
@@ -574,7 +723,6 @@ case $basic_machine in
|
|||||||
i370-ibm* | ibm*)
|
i370-ibm* | ibm*)
|
||||||
basic_machine=i370-ibm
|
basic_machine=i370-ibm
|
||||||
;;
|
;;
|
||||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
|
||||||
i*86v32)
|
i*86v32)
|
||||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||||
os=-sysv32
|
os=-sysv32
|
||||||
@@ -613,6 +761,14 @@ case $basic_machine in
|
|||||||
basic_machine=m68k-isi
|
basic_machine=m68k-isi
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
m68knommu)
|
||||||
|
basic_machine=m68k-unknown
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
|
m68knommu-*)
|
||||||
|
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
m88k-omron*)
|
m88k-omron*)
|
||||||
basic_machine=m88k-omron
|
basic_machine=m88k-omron
|
||||||
;;
|
;;
|
||||||
@@ -624,10 +780,21 @@ case $basic_machine in
|
|||||||
basic_machine=ns32k-utek
|
basic_machine=ns32k-utek
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
microblaze*)
|
||||||
|
basic_machine=microblaze-xilinx
|
||||||
|
;;
|
||||||
|
mingw64)
|
||||||
|
basic_machine=x86_64-pc
|
||||||
|
os=-mingw64
|
||||||
|
;;
|
||||||
mingw32)
|
mingw32)
|
||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-mingw32
|
os=-mingw32
|
||||||
;;
|
;;
|
||||||
|
mingw32ce)
|
||||||
|
basic_machine=arm-unknown
|
||||||
|
os=-mingw32ce
|
||||||
|
;;
|
||||||
miniframe)
|
miniframe)
|
||||||
basic_machine=m68000-convergent
|
basic_machine=m68000-convergent
|
||||||
;;
|
;;
|
||||||
@@ -641,10 +808,6 @@ case $basic_machine in
|
|||||||
mips3*)
|
mips3*)
|
||||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||||
;;
|
;;
|
||||||
mmix*)
|
|
||||||
basic_machine=mmix-knuth
|
|
||||||
os=-mmixware
|
|
||||||
;;
|
|
||||||
monitor)
|
monitor)
|
||||||
basic_machine=m68k-rom68k
|
basic_machine=m68k-rom68k
|
||||||
os=-coff
|
os=-coff
|
||||||
@@ -657,10 +820,21 @@ case $basic_machine in
|
|||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-msdos
|
os=-msdos
|
||||||
;;
|
;;
|
||||||
|
ms1-*)
|
||||||
|
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||||
|
;;
|
||||||
|
msys)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-msys
|
||||||
|
;;
|
||||||
mvs)
|
mvs)
|
||||||
basic_machine=i370-ibm
|
basic_machine=i370-ibm
|
||||||
os=-mvs
|
os=-mvs
|
||||||
;;
|
;;
|
||||||
|
nacl)
|
||||||
|
basic_machine=le32-unknown
|
||||||
|
os=-nacl
|
||||||
|
;;
|
||||||
ncr3000)
|
ncr3000)
|
||||||
basic_machine=i486-ncr
|
basic_machine=i486-ncr
|
||||||
os=-sysv4
|
os=-sysv4
|
||||||
@@ -725,9 +899,11 @@ case $basic_machine in
|
|||||||
np1)
|
np1)
|
||||||
basic_machine=np1-gould
|
basic_machine=np1-gould
|
||||||
;;
|
;;
|
||||||
nv1)
|
neo-tandem)
|
||||||
basic_machine=nv1-cray
|
basic_machine=neo-tandem
|
||||||
os=-unicosmp
|
;;
|
||||||
|
nse-tandem)
|
||||||
|
basic_machine=nse-tandem
|
||||||
;;
|
;;
|
||||||
nsr-tandem)
|
nsr-tandem)
|
||||||
basic_machine=nsr-tandem
|
basic_machine=nsr-tandem
|
||||||
@@ -736,9 +912,12 @@ case $basic_machine in
|
|||||||
basic_machine=hppa1.1-oki
|
basic_machine=hppa1.1-oki
|
||||||
os=-proelf
|
os=-proelf
|
||||||
;;
|
;;
|
||||||
or32 | or32-*)
|
openrisc | openrisc-*)
|
||||||
basic_machine=or32-unknown
|
basic_machine=or32-unknown
|
||||||
os=-coff
|
;;
|
||||||
|
os400)
|
||||||
|
basic_machine=powerpc-ibm
|
||||||
|
os=-os400
|
||||||
;;
|
;;
|
||||||
OSE68000 | ose68000)
|
OSE68000 | ose68000)
|
||||||
basic_machine=m68000-ericsson
|
basic_machine=m68000-ericsson
|
||||||
@@ -756,6 +935,14 @@ case $basic_machine in
|
|||||||
basic_machine=i860-intel
|
basic_machine=i860-intel
|
||||||
os=-osf
|
os=-osf
|
||||||
;;
|
;;
|
||||||
|
parisc)
|
||||||
|
basic_machine=hppa-unknown
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
|
parisc-*)
|
||||||
|
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
os=-linux
|
||||||
|
;;
|
||||||
pbd)
|
pbd)
|
||||||
basic_machine=sparc-tti
|
basic_machine=sparc-tti
|
||||||
;;
|
;;
|
||||||
@@ -765,6 +952,12 @@ case $basic_machine in
|
|||||||
pc532 | pc532-*)
|
pc532 | pc532-*)
|
||||||
basic_machine=ns32k-pc532
|
basic_machine=ns32k-pc532
|
||||||
;;
|
;;
|
||||||
|
pc98)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
;;
|
||||||
|
pc98-*)
|
||||||
|
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
pentium | p5 | k5 | k6 | nexgen | viac3)
|
pentium | p5 | k5 | k6 | nexgen | viac3)
|
||||||
basic_machine=i586-pc
|
basic_machine=i586-pc
|
||||||
;;
|
;;
|
||||||
@@ -794,9 +987,10 @@ case $basic_machine in
|
|||||||
;;
|
;;
|
||||||
power) basic_machine=power-ibm
|
power) basic_machine=power-ibm
|
||||||
;;
|
;;
|
||||||
ppc) basic_machine=powerpc-unknown
|
ppc | ppcbe) basic_machine=powerpc-unknown
|
||||||
;;
|
;;
|
||||||
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
ppc-* | ppcbe-*)
|
||||||
|
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||||
basic_machine=powerpcle-unknown
|
basic_machine=powerpcle-unknown
|
||||||
@@ -821,6 +1015,14 @@ case $basic_machine in
|
|||||||
basic_machine=i586-unknown
|
basic_machine=i586-unknown
|
||||||
os=-pw32
|
os=-pw32
|
||||||
;;
|
;;
|
||||||
|
rdos | rdos64)
|
||||||
|
basic_machine=x86_64-pc
|
||||||
|
os=-rdos
|
||||||
|
;;
|
||||||
|
rdos32)
|
||||||
|
basic_machine=i386-pc
|
||||||
|
os=-rdos
|
||||||
|
;;
|
||||||
rom68k)
|
rom68k)
|
||||||
basic_machine=m68k-rom68k
|
basic_machine=m68k-rom68k
|
||||||
os=-coff
|
os=-coff
|
||||||
@@ -847,6 +1049,10 @@ case $basic_machine in
|
|||||||
sb1el)
|
sb1el)
|
||||||
basic_machine=mipsisa64sb1el-unknown
|
basic_machine=mipsisa64sb1el-unknown
|
||||||
;;
|
;;
|
||||||
|
sde)
|
||||||
|
basic_machine=mipsisa32-sde
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
sei)
|
sei)
|
||||||
basic_machine=mips-sei
|
basic_machine=mips-sei
|
||||||
os=-seiux
|
os=-seiux
|
||||||
@@ -858,6 +1064,9 @@ case $basic_machine in
|
|||||||
basic_machine=sh-hitachi
|
basic_machine=sh-hitachi
|
||||||
os=-hms
|
os=-hms
|
||||||
;;
|
;;
|
||||||
|
sh5el)
|
||||||
|
basic_machine=sh5le-unknown
|
||||||
|
;;
|
||||||
sh64)
|
sh64)
|
||||||
basic_machine=sh64-unknown
|
basic_machine=sh64-unknown
|
||||||
;;
|
;;
|
||||||
@@ -879,6 +1088,9 @@ case $basic_machine in
|
|||||||
basic_machine=i860-stratus
|
basic_machine=i860-stratus
|
||||||
os=-sysv4
|
os=-sysv4
|
||||||
;;
|
;;
|
||||||
|
strongarm-* | thumb-*)
|
||||||
|
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
sun2)
|
sun2)
|
||||||
basic_machine=m68000-sun
|
basic_machine=m68000-sun
|
||||||
;;
|
;;
|
||||||
@@ -935,17 +1147,9 @@ case $basic_machine in
|
|||||||
basic_machine=t90-cray
|
basic_machine=t90-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
;;
|
;;
|
||||||
tic54x | c54x*)
|
tile*)
|
||||||
basic_machine=tic54x-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
os=-coff
|
os=-linux-gnu
|
||||||
;;
|
|
||||||
tic55x | c55x*)
|
|
||||||
basic_machine=tic55x-unknown
|
|
||||||
os=-coff
|
|
||||||
;;
|
|
||||||
tic6x | c6x*)
|
|
||||||
basic_machine=tic6x-unknown
|
|
||||||
os=-coff
|
|
||||||
;;
|
;;
|
||||||
tx39)
|
tx39)
|
||||||
basic_machine=mipstx39-unknown
|
basic_machine=mipstx39-unknown
|
||||||
@@ -960,6 +1164,10 @@ case $basic_machine in
|
|||||||
tower | tower-32)
|
tower | tower-32)
|
||||||
basic_machine=m68k-ncr
|
basic_machine=m68k-ncr
|
||||||
;;
|
;;
|
||||||
|
tpf)
|
||||||
|
basic_machine=s390x-ibm
|
||||||
|
os=-tpf
|
||||||
|
;;
|
||||||
udi29k)
|
udi29k)
|
||||||
basic_machine=a29k-amd
|
basic_machine=a29k-amd
|
||||||
os=-udi
|
os=-udi
|
||||||
@@ -1003,9 +1211,16 @@ case $basic_machine in
|
|||||||
basic_machine=hppa1.1-winbond
|
basic_machine=hppa1.1-winbond
|
||||||
os=-proelf
|
os=-proelf
|
||||||
;;
|
;;
|
||||||
|
xbox)
|
||||||
|
basic_machine=i686-pc
|
||||||
|
os=-mingw32
|
||||||
|
;;
|
||||||
xps | xps100)
|
xps | xps100)
|
||||||
basic_machine=xps100-honeywell
|
basic_machine=xps100-honeywell
|
||||||
;;
|
;;
|
||||||
|
xscale-* | xscalee[bl]-*)
|
||||||
|
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
|
||||||
|
;;
|
||||||
ymp)
|
ymp)
|
||||||
basic_machine=ymp-cray
|
basic_machine=ymp-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
@@ -1014,6 +1229,10 @@ case $basic_machine in
|
|||||||
basic_machine=z8k-unknown
|
basic_machine=z8k-unknown
|
||||||
os=-sim
|
os=-sim
|
||||||
;;
|
;;
|
||||||
|
z80-*-coff)
|
||||||
|
basic_machine=z80-unknown
|
||||||
|
os=-sim
|
||||||
|
;;
|
||||||
none)
|
none)
|
||||||
basic_machine=none-none
|
basic_machine=none-none
|
||||||
os=-none
|
os=-none
|
||||||
@@ -1033,6 +1252,9 @@ case $basic_machine in
|
|||||||
romp)
|
romp)
|
||||||
basic_machine=romp-ibm
|
basic_machine=romp-ibm
|
||||||
;;
|
;;
|
||||||
|
mmix)
|
||||||
|
basic_machine=mmix-knuth
|
||||||
|
;;
|
||||||
rs6000)
|
rs6000)
|
||||||
basic_machine=rs6000-ibm
|
basic_machine=rs6000-ibm
|
||||||
;;
|
;;
|
||||||
@@ -1049,13 +1271,10 @@ case $basic_machine in
|
|||||||
we32k)
|
we32k)
|
||||||
basic_machine=we32k-att
|
basic_machine=we32k-att
|
||||||
;;
|
;;
|
||||||
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
|
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||||
basic_machine=sh-unknown
|
basic_machine=sh-unknown
|
||||||
;;
|
;;
|
||||||
sh64)
|
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||||
basic_machine=sh64-unknown
|
|
||||||
;;
|
|
||||||
sparc | sparcv9 | sparcv9b)
|
|
||||||
basic_machine=sparc-sun
|
basic_machine=sparc-sun
|
||||||
;;
|
;;
|
||||||
cydra)
|
cydra)
|
||||||
@@ -1099,9 +1318,12 @@ esac
|
|||||||
if [ x"$os" != x"" ]
|
if [ x"$os" != x"" ]
|
||||||
then
|
then
|
||||||
case $os in
|
case $os in
|
||||||
# First match some system type aliases
|
# First match some system type aliases
|
||||||
# that might get confused with valid system types.
|
# that might get confused with valid system types.
|
||||||
# -solaris* is a basic system type, with this one exception.
|
# -solaris* is a basic system type, with this one exception.
|
||||||
|
-auroraux)
|
||||||
|
os=-auroraux
|
||||||
|
;;
|
||||||
-solaris1 | -solaris1.*)
|
-solaris1 | -solaris1.*)
|
||||||
os=`echo $os | sed -e 's|solaris1|sunos4|'`
|
os=`echo $os | sed -e 's|solaris1|sunos4|'`
|
||||||
;;
|
;;
|
||||||
@@ -1122,25 +1344,31 @@ case $os in
|
|||||||
# Each alternative MUST END IN A *, to match a version number.
|
# Each alternative MUST END IN A *, to match a version number.
|
||||||
# -sysv* is not here because it comes later, after sysvr4.
|
# -sysv* is not here because it comes later, after sysvr4.
|
||||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
|
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||||
|
| -sym* | -kopensolaris* | -plan9* \
|
||||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||||
| -aos* \
|
| -aos* | -aros* \
|
||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
|
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
| -bitrig* | -openbsd* | -solidbsd* \
|
||||||
|
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||||
|
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||||
| -chorusos* | -chorusrdb* \
|
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
|
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||||
|
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||||
|
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
|
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
@@ -1158,12 +1386,15 @@ case $os in
|
|||||||
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
||||||
;;
|
;;
|
||||||
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
||||||
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
|
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
|
||||||
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
||||||
;;
|
;;
|
||||||
-mac*)
|
-mac*)
|
||||||
os=`echo $os | sed -e 's|mac|macos|'`
|
os=`echo $os | sed -e 's|mac|macos|'`
|
||||||
;;
|
;;
|
||||||
|
-linux-dietlibc)
|
||||||
|
os=-linux-dietlibc
|
||||||
|
;;
|
||||||
-linux*)
|
-linux*)
|
||||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||||
;;
|
;;
|
||||||
@@ -1176,6 +1407,9 @@ case $os in
|
|||||||
-opened*)
|
-opened*)
|
||||||
os=-openedition
|
os=-openedition
|
||||||
;;
|
;;
|
||||||
|
-os400*)
|
||||||
|
os=-os400
|
||||||
|
;;
|
||||||
-wince*)
|
-wince*)
|
||||||
os=-wince
|
os=-wince
|
||||||
;;
|
;;
|
||||||
@@ -1197,6 +1431,9 @@ case $os in
|
|||||||
-atheos*)
|
-atheos*)
|
||||||
os=-atheos
|
os=-atheos
|
||||||
;;
|
;;
|
||||||
|
-syllable*)
|
||||||
|
os=-syllable
|
||||||
|
;;
|
||||||
-386bsd)
|
-386bsd)
|
||||||
os=-bsd
|
os=-bsd
|
||||||
;;
|
;;
|
||||||
@@ -1219,6 +1456,9 @@ case $os in
|
|||||||
-sinix*)
|
-sinix*)
|
||||||
os=-sysv4
|
os=-sysv4
|
||||||
;;
|
;;
|
||||||
|
-tpf*)
|
||||||
|
os=-tpf
|
||||||
|
;;
|
||||||
-triton*)
|
-triton*)
|
||||||
os=-sysv3
|
os=-sysv3
|
||||||
;;
|
;;
|
||||||
@@ -1252,8 +1492,13 @@ case $os in
|
|||||||
-aros*)
|
-aros*)
|
||||||
os=-aros
|
os=-aros
|
||||||
;;
|
;;
|
||||||
-kaos*)
|
-zvmoe)
|
||||||
os=-kaos
|
os=-zvmoe
|
||||||
|
;;
|
||||||
|
-dicos*)
|
||||||
|
os=-dicos
|
||||||
|
;;
|
||||||
|
-nacl*)
|
||||||
;;
|
;;
|
||||||
-none)
|
-none)
|
||||||
;;
|
;;
|
||||||
@@ -1277,6 +1522,12 @@ else
|
|||||||
# system, and we'll never get to this point.
|
# system, and we'll never get to this point.
|
||||||
|
|
||||||
case $basic_machine in
|
case $basic_machine in
|
||||||
|
score-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
|
spu-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
*-acorn)
|
*-acorn)
|
||||||
os=-riscix1.2
|
os=-riscix1.2
|
||||||
;;
|
;;
|
||||||
@@ -1286,9 +1537,21 @@ case $basic_machine in
|
|||||||
arm*-semi)
|
arm*-semi)
|
||||||
os=-aout
|
os=-aout
|
||||||
;;
|
;;
|
||||||
c4x-* | tic4x-*)
|
c4x-* | tic4x-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
|
hexagon-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
|
tic54x-*)
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
|
tic55x-*)
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
|
tic6x-*)
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
# This must come before the *-dec entry.
|
# This must come before the *-dec entry.
|
||||||
pdp10-*)
|
pdp10-*)
|
||||||
os=-tops20
|
os=-tops20
|
||||||
@@ -1307,19 +1570,22 @@ case $basic_machine in
|
|||||||
;;
|
;;
|
||||||
m68000-sun)
|
m68000-sun)
|
||||||
os=-sunos3
|
os=-sunos3
|
||||||
# This also exists in the configure program, but was not the
|
|
||||||
# default.
|
|
||||||
# os=-sunos4
|
|
||||||
;;
|
;;
|
||||||
m68*-cisco)
|
m68*-cisco)
|
||||||
os=-aout
|
os=-aout
|
||||||
;;
|
;;
|
||||||
|
mep-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
mips*-cisco)
|
mips*-cisco)
|
||||||
os=-elf
|
os=-elf
|
||||||
;;
|
;;
|
||||||
mips*-*)
|
mips*-*)
|
||||||
os=-elf
|
os=-elf
|
||||||
;;
|
;;
|
||||||
|
or1k-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
or32-*)
|
or32-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
@@ -1332,9 +1598,15 @@ case $basic_machine in
|
|||||||
*-be)
|
*-be)
|
||||||
os=-beos
|
os=-beos
|
||||||
;;
|
;;
|
||||||
|
*-haiku)
|
||||||
|
os=-haiku
|
||||||
|
;;
|
||||||
*-ibm)
|
*-ibm)
|
||||||
os=-aix
|
os=-aix
|
||||||
;;
|
;;
|
||||||
|
*-knuth)
|
||||||
|
os=-mmixware
|
||||||
|
;;
|
||||||
*-wec)
|
*-wec)
|
||||||
os=-proelf
|
os=-proelf
|
||||||
;;
|
;;
|
||||||
@@ -1437,7 +1709,7 @@ case $basic_machine in
|
|||||||
-sunos*)
|
-sunos*)
|
||||||
vendor=sun
|
vendor=sun
|
||||||
;;
|
;;
|
||||||
-aix*)
|
-cnk*|-aix*)
|
||||||
vendor=ibm
|
vendor=ibm
|
||||||
;;
|
;;
|
||||||
-beos*)
|
-beos*)
|
||||||
@@ -1467,9 +1739,15 @@ case $basic_machine in
|
|||||||
-mvs* | -opened*)
|
-mvs* | -opened*)
|
||||||
vendor=ibm
|
vendor=ibm
|
||||||
;;
|
;;
|
||||||
|
-os400*)
|
||||||
|
vendor=ibm
|
||||||
|
;;
|
||||||
-ptx*)
|
-ptx*)
|
||||||
vendor=sequent
|
vendor=sequent
|
||||||
;;
|
;;
|
||||||
|
-tpf*)
|
||||||
|
vendor=ibm
|
||||||
|
;;
|
||||||
-vxsim* | -vxworks* | -windiss*)
|
-vxsim* | -vxworks* | -windiss*)
|
||||||
vendor=wrs
|
vendor=wrs
|
||||||
;;
|
;;
|
||||||
@@ -1494,7 +1772,7 @@ case $basic_machine in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
echo $basic_machine$os
|
echo $basic_machine$os
|
||||||
exit 0
|
exit
|
||||||
|
|
||||||
# Local variables:
|
# Local variables:
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
|||||||
@@ -74,6 +74,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
|||||||
|
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Avoid interferences from the environment.
|
||||||
|
gccflag= dashmflag=
|
||||||
|
|
||||||
# Some modes work just like other modes, but use different flags. We
|
# Some modes work just like other modes, but use different flags. We
|
||||||
# parameterize here, but still list the modes in the big case below,
|
# parameterize here, but still list the modes in the big case below,
|
||||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
@@ -108,7 +111,7 @@ if test "$depmode" = msvc7msys; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$depmode" = xlc; then
|
if test "$depmode" = xlc; then
|
||||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
|
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||||
gccflag=-qmakedep=gcc,-MF
|
gccflag=-qmakedep=gcc,-MF
|
||||||
depmode=gcc
|
depmode=gcc
|
||||||
fi
|
fi
|
||||||
@@ -142,13 +145,17 @@ gcc3)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
gcc)
|
gcc)
|
||||||
|
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||||
|
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||||
|
## (see the conditional assignment to $gccflag above).
|
||||||
## There are various ways to get dependency output from gcc. Here's
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
## why we pick this rather obscure method:
|
## why we pick this rather obscure method:
|
||||||
## - Don't want to use -MD because we'd like the dependencies to end
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
## up in a subdir. Having to rename by hand is ugly.
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
## (We might end up doing this anyway to support other compilers.)
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
## -MM, not -M (despite what the docs say).
|
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||||
|
## supported by the other compilers which use the 'gcc' depmode.
|
||||||
## - Using -M directly means running the compiler twice (even worse
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
## than renaming).
|
## than renaming).
|
||||||
if test -z "$gccflag"; then
|
if test -z "$gccflag"; then
|
||||||
|
|||||||
249
config/libtool.m4
vendored
249
config/libtool.m4
vendored
@@ -1,8 +1,8 @@
|
|||||||
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
|
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||||
# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
|
# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
# Inc.
|
# Foundation, Inc.
|
||||||
# Written by Gordon Matzigkeit, 1996
|
# Written by Gordon Matzigkeit, 1996
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation gives
|
# This file is free software; the Free Software Foundation gives
|
||||||
@@ -11,8 +11,8 @@
|
|||||||
|
|
||||||
m4_define([_LT_COPYING], [dnl
|
m4_define([_LT_COPYING], [dnl
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||||
# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
|
# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
# Inc.
|
# Foundation, Inc.
|
||||||
# Written by Gordon Matzigkeit, 1996
|
# Written by Gordon Matzigkeit, 1996
|
||||||
#
|
#
|
||||||
# This file is part of GNU Libtool.
|
# This file is part of GNU Libtool.
|
||||||
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
|
|||||||
AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
|
AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
|
||||||
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
|
AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
|
||||||
|
|
||||||
|
_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
|
||||||
|
dnl
|
||||||
_LT_DECL([], [host_alias], [0], [The host system])dnl
|
_LT_DECL([], [host_alias], [0], [The host system])dnl
|
||||||
_LT_DECL([], [host], [0])dnl
|
_LT_DECL([], [host], [0])dnl
|
||||||
_LT_DECL([], [host_os], [0])dnl
|
_LT_DECL([], [host_os], [0])dnl
|
||||||
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
|
|||||||
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
|
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
|
||||||
configured by $[0], generated by m4_PACKAGE_STRING.
|
configured by $[0], generated by m4_PACKAGE_STRING.
|
||||||
|
|
||||||
Copyright (C) 2010 Free Software Foundation, Inc.
|
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||||
This config.lt script is free software; the Free Software Foundation
|
This config.lt script is free software; the Free Software Foundation
|
||||||
gives unlimited permision to copy, distribute and modify it."
|
gives unlimited permision to copy, distribute and modify it."
|
||||||
|
|
||||||
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
|
|||||||
m4_case([$1],
|
m4_case([$1],
|
||||||
[C], [_LT_LANG(C)],
|
[C], [_LT_LANG(C)],
|
||||||
[C++], [_LT_LANG(CXX)],
|
[C++], [_LT_LANG(CXX)],
|
||||||
|
[Go], [_LT_LANG(GO)],
|
||||||
[Java], [_LT_LANG(GCJ)],
|
[Java], [_LT_LANG(GCJ)],
|
||||||
[Fortran 77], [_LT_LANG(F77)],
|
[Fortran 77], [_LT_LANG(F77)],
|
||||||
[Fortran], [_LT_LANG(FC)],
|
[Fortran], [_LT_LANG(FC)],
|
||||||
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
|
|||||||
])# _LT_LANG
|
])# _LT_LANG
|
||||||
|
|
||||||
|
|
||||||
|
m4_ifndef([AC_PROG_GO], [
|
||||||
|
############################################################
|
||||||
|
# NOTE: This macro has been submitted for inclusion into #
|
||||||
|
# GNU Autoconf as AC_PROG_GO. When it is available in #
|
||||||
|
# a released version of Autoconf we should remove this #
|
||||||
|
# macro and use it instead. #
|
||||||
|
############################################################
|
||||||
|
m4_defun([AC_PROG_GO],
|
||||||
|
[AC_LANG_PUSH(Go)dnl
|
||||||
|
AC_ARG_VAR([GOC], [Go compiler command])dnl
|
||||||
|
AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
|
||||||
|
_AC_ARG_VAR_LDFLAGS()dnl
|
||||||
|
AC_CHECK_TOOL(GOC, gccgo)
|
||||||
|
if test -z "$GOC"; then
|
||||||
|
if test -n "$ac_tool_prefix"; then
|
||||||
|
AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test -z "$GOC"; then
|
||||||
|
AC_CHECK_PROG(GOC, gccgo, gccgo, false)
|
||||||
|
fi
|
||||||
|
])#m4_defun
|
||||||
|
])#m4_ifndef
|
||||||
|
|
||||||
|
|
||||||
# _LT_LANG_DEFAULT_CONFIG
|
# _LT_LANG_DEFAULT_CONFIG
|
||||||
# -----------------------
|
# -----------------------
|
||||||
m4_defun([_LT_LANG_DEFAULT_CONFIG],
|
m4_defun([_LT_LANG_DEFAULT_CONFIG],
|
||||||
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
|
|||||||
m4_ifdef([LT_PROG_GCJ],
|
m4_ifdef([LT_PROG_GCJ],
|
||||||
[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
|
[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
|
||||||
|
|
||||||
|
AC_PROVIDE_IFELSE([AC_PROG_GO],
|
||||||
|
[LT_LANG(GO)],
|
||||||
|
[m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
|
||||||
|
|
||||||
AC_PROVIDE_IFELSE([LT_PROG_RC],
|
AC_PROVIDE_IFELSE([LT_PROG_RC],
|
||||||
[LT_LANG(RC)],
|
[LT_LANG(RC)],
|
||||||
[m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
|
[m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
|
||||||
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
|
|||||||
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
|
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
|
||||||
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
|
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
|
||||||
_lt_result=$?
|
_lt_result=$?
|
||||||
if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
|
# If there is a non-empty error log, and "single_module"
|
||||||
|
# appears in it, assume the flag caused a linker warning
|
||||||
|
if test -s conftest.err && $GREP single_module conftest.err; then
|
||||||
|
cat conftest.err >&AS_MESSAGE_LOG_FD
|
||||||
|
# Otherwise, if the output was created with a 0 exit code from
|
||||||
|
# the compiler, it worked.
|
||||||
|
elif test -f libconftest.dylib && test $_lt_result -eq 0; then
|
||||||
lt_cv_apple_cc_single_mod=yes
|
lt_cv_apple_cc_single_mod=yes
|
||||||
else
|
else
|
||||||
cat conftest.err >&AS_MESSAGE_LOG_FD
|
cat conftest.err >&AS_MESSAGE_LOG_FD
|
||||||
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
|
|||||||
rm -rf libconftest.dylib*
|
rm -rf libconftest.dylib*
|
||||||
rm -f conftest.*
|
rm -f conftest.*
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
|
AC_CACHE_CHECK([for -exported_symbols_list linker flag],
|
||||||
[lt_cv_ld_exported_symbols_list],
|
[lt_cv_ld_exported_symbols_list],
|
||||||
[lt_cv_ld_exported_symbols_list=no
|
[lt_cv_ld_exported_symbols_list=no
|
||||||
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
|
|||||||
[lt_cv_ld_exported_symbols_list=no])
|
[lt_cv_ld_exported_symbols_list=no])
|
||||||
LDFLAGS="$save_LDFLAGS"
|
LDFLAGS="$save_LDFLAGS"
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
|
AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
|
||||||
[lt_cv_ld_force_load=no
|
[lt_cv_ld_force_load=no
|
||||||
cat > conftest.c << _LT_EOF
|
cat > conftest.c << _LT_EOF
|
||||||
@@ -990,7 +1030,9 @@ _LT_EOF
|
|||||||
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
|
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
|
||||||
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
|
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
|
||||||
_lt_result=$?
|
_lt_result=$?
|
||||||
if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
|
if test -s conftest.err && $GREP force_load conftest.err; then
|
||||||
|
cat conftest.err >&AS_MESSAGE_LOG_FD
|
||||||
|
elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
|
||||||
lt_cv_ld_force_load=yes
|
lt_cv_ld_force_load=yes
|
||||||
else
|
else
|
||||||
cat conftest.err >&AS_MESSAGE_LOG_FD
|
cat conftest.err >&AS_MESSAGE_LOG_FD
|
||||||
@@ -1035,8 +1077,8 @@ _LT_EOF
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
# _LT_DARWIN_LINKER_FEATURES
|
# _LT_DARWIN_LINKER_FEATURES([TAG])
|
||||||
# --------------------------
|
# ---------------------------------
|
||||||
# Checks for linker and compiler features on darwin
|
# Checks for linker and compiler features on darwin
|
||||||
m4_defun([_LT_DARWIN_LINKER_FEATURES],
|
m4_defun([_LT_DARWIN_LINKER_FEATURES],
|
||||||
[
|
[
|
||||||
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
|
|||||||
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
|
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
|
||||||
if test "$lt_cv_ld_force_load" = "yes"; then
|
if test "$lt_cv_ld_force_load" = "yes"; then
|
||||||
_LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
|
_LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
|
||||||
|
m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
|
||||||
|
[FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
|
||||||
else
|
else
|
||||||
_LT_TAGVAR(whole_archive_flag_spec, $1)=''
|
_LT_TAGVAR(whole_archive_flag_spec, $1)=''
|
||||||
fi
|
fi
|
||||||
@@ -1330,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
CFLAGS="$SAVE_CFLAGS"
|
CFLAGS="$SAVE_CFLAGS"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
sparc*-*solaris*)
|
*-*solaris*)
|
||||||
# Find out which ABI we are using.
|
# Find out which ABI we are using.
|
||||||
echo 'int i;' > conftest.$ac_ext
|
echo 'int i;' > conftest.$ac_ext
|
||||||
if AC_TRY_EVAL(ac_compile); then
|
if AC_TRY_EVAL(ac_compile); then
|
||||||
case `/usr/bin/file conftest.o` in
|
case `/usr/bin/file conftest.o` in
|
||||||
*64-bit*)
|
*64-bit*)
|
||||||
case $lt_cv_prog_gnu_ld in
|
case $lt_cv_prog_gnu_ld in
|
||||||
yes*) LD="${LD-ld} -m elf64_sparc" ;;
|
yes*)
|
||||||
|
case $host in
|
||||||
|
i?86-*-solaris*)
|
||||||
|
LD="${LD-ld} -m elf_x86_64"
|
||||||
|
;;
|
||||||
|
sparc*-*-solaris*)
|
||||||
|
LD="${LD-ld} -m elf64_sparc"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
# GNU ld 2.21 introduced _sol2 emulations. Use them if available.
|
||||||
|
if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
|
||||||
|
LD="${LD-ld}_sol2"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
|
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
|
||||||
LD="${LD-ld} -64"
|
LD="${LD-ld} -64"
|
||||||
@@ -1414,13 +1471,13 @@ old_postuninstall_cmds=
|
|||||||
if test -n "$RANLIB"; then
|
if test -n "$RANLIB"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
openbsd*)
|
openbsd*)
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
|
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
@@ -1600,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
|
|||||||
lt_cv_sys_max_cmd_len=196608
|
lt_cv_sys_max_cmd_len=196608
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
os2*)
|
||||||
|
# The test takes a long time on OS/2.
|
||||||
|
lt_cv_sys_max_cmd_len=8192
|
||||||
|
;;
|
||||||
|
|
||||||
osf*)
|
osf*)
|
||||||
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
|
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
|
||||||
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
|
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
|
||||||
@@ -1639,7 +1701,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
|
|||||||
# If test is not a shell built-in, we'll probably end up computing a
|
# If test is not a shell built-in, we'll probably end up computing a
|
||||||
# maximum length that is only half of the actual maximum length, but
|
# maximum length that is only half of the actual maximum length, but
|
||||||
# we can't tell.
|
# we can't tell.
|
||||||
while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
|
while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
|
||||||
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
|
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
|
||||||
test $i != 17 # 1/2 MB should be enough
|
test $i != 17 # 1/2 MB should be enough
|
||||||
do
|
do
|
||||||
@@ -2185,7 +2247,7 @@ need_version=unknown
|
|||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
aix3*)
|
aix3*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
|
||||||
shlibpath_var=LIBPATH
|
shlibpath_var=LIBPATH
|
||||||
|
|
||||||
@@ -2194,7 +2256,7 @@ aix3*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
aix[[4-9]]*)
|
aix[[4-9]]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
hardcode_into_libs=yes
|
hardcode_into_libs=yes
|
||||||
@@ -2259,7 +2321,7 @@ beos*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
bsdi[[45]]*)
|
bsdi[[45]]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
@@ -2398,7 +2460,7 @@ m4_if([$1], [],[
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
dgux*)
|
dgux*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
|
||||||
@@ -2451,17 +2513,18 @@ freebsd* | dragonfly*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
gnu*)
|
gnu*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
|
shlibpath_overrides_runpath=no
|
||||||
hardcode_into_libs=yes
|
hardcode_into_libs=yes
|
||||||
;;
|
;;
|
||||||
|
|
||||||
haiku*)
|
haiku*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
dynamic_linker="$host_os runtime_loader"
|
dynamic_linker="$host_os runtime_loader"
|
||||||
@@ -2522,7 +2585,7 @@ hpux9* | hpux10* | hpux11*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
interix[[3-9]]*)
|
interix[[3-9]]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
|
||||||
@@ -2538,7 +2601,7 @@ irix5* | irix6* | nonstopux*)
|
|||||||
nonstopux*) version_type=nonstopux ;;
|
nonstopux*) version_type=nonstopux ;;
|
||||||
*)
|
*)
|
||||||
if test "$lt_cv_prog_gnu_ld" = yes; then
|
if test "$lt_cv_prog_gnu_ld" = yes; then
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
else
|
else
|
||||||
version_type=irix
|
version_type=irix
|
||||||
fi ;;
|
fi ;;
|
||||||
@@ -2575,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*)
|
|||||||
dynamic_linker=no
|
dynamic_linker=no
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# This must be Linux ELF.
|
# This must be glibc/ELF.
|
||||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -2640,7 +2703,7 @@ netbsd*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
newsos6)
|
newsos6)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
shlibpath_overrides_runpath=yes
|
shlibpath_overrides_runpath=yes
|
||||||
@@ -2709,7 +2772,7 @@ rdos*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
solaris*)
|
solaris*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -2734,7 +2797,7 @@ sunos4*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
sysv4 | sysv4.3*)
|
sysv4 | sysv4.3*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -2758,7 +2821,7 @@ sysv4 | sysv4.3*)
|
|||||||
|
|
||||||
sysv4*MP*)
|
sysv4*MP*)
|
||||||
if test -d /usr/nec ;then
|
if test -d /usr/nec ;then
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
|
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
|
||||||
soname_spec='$libname${shared_ext}.$major'
|
soname_spec='$libname${shared_ext}.$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -2789,7 +2852,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
|||||||
|
|
||||||
tpf*)
|
tpf*)
|
||||||
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
|
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -2799,7 +2862,7 @@ tpf*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
uts4*)
|
uts4*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -3221,7 +3284,7 @@ irix5* | irix6* | nonstopux*)
|
|||||||
lt_cv_deplibs_check_method=pass_all
|
lt_cv_deplibs_check_method=pass_all
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# This must be Linux ELF.
|
# This must be glibc/ELF.
|
||||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||||
lt_cv_deplibs_check_method=pass_all
|
lt_cv_deplibs_check_method=pass_all
|
||||||
;;
|
;;
|
||||||
@@ -3641,6 +3704,7 @@ for ac_symprfx in "" "_"; do
|
|||||||
# which start with @ or ?.
|
# which start with @ or ?.
|
||||||
lt_cv_sys_global_symbol_pipe="$AWK ['"\
|
lt_cv_sys_global_symbol_pipe="$AWK ['"\
|
||||||
" {last_section=section; section=\$ 3};"\
|
" {last_section=section; section=\$ 3};"\
|
||||||
|
" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
|
||||||
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
|
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
|
||||||
" \$ 0!~/External *\|/{next};"\
|
" \$ 0!~/External *\|/{next};"\
|
||||||
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
|
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
|
||||||
@@ -4225,7 +4289,9 @@ m4_if([$1], [CXX], [
|
|||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
nvcc*) # Cuda Compiler Driver 2.2
|
nvcc*) # Cuda Compiler Driver 2.2
|
||||||
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
|
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
|
||||||
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
|
if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
@@ -4317,18 +4383,33 @@ m4_if([$1], [CXX], [
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
case `$CC -V 2>&1 | sed 5q` in
|
case `$CC -V 2>&1 | sed 5q` in
|
||||||
*Sun\ F* | *Sun*Fortran*)
|
*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
|
||||||
# Sun Fortran 8.3 passes all unrecognized flags to the linker
|
# Sun Fortran 8.3 passes all unrecognized flags to the linker
|
||||||
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
||||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||||
_LT_TAGVAR(lt_prog_compiler_wl, $1)=''
|
_LT_TAGVAR(lt_prog_compiler_wl, $1)=''
|
||||||
;;
|
;;
|
||||||
|
*Sun\ F* | *Sun*Fortran*)
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
|
||||||
|
;;
|
||||||
*Sun\ C*)
|
*Sun\ C*)
|
||||||
# Sun C 5.9
|
# Sun C 5.9
|
||||||
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
|
||||||
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||||
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||||
;;
|
;;
|
||||||
|
*Intel*\ [[CF]]*Compiler*)
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
|
||||||
|
;;
|
||||||
|
*Portland\ Group*)
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
|
||||||
|
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -4488,7 +4569,9 @@ m4_if([$1], [CXX], [
|
|||||||
;;
|
;;
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | cegcc*)
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl*) ;;
|
cl*)
|
||||||
|
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
|
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
|
||||||
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
|
_LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
|
||||||
@@ -4513,7 +4596,6 @@ m4_if([$1], [CXX], [
|
|||||||
_LT_TAGVAR(hardcode_direct, $1)=no
|
_LT_TAGVAR(hardcode_direct, $1)=no
|
||||||
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
|
|
||||||
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
||||||
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
||||||
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
|
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
|
||||||
@@ -4764,8 +4846,7 @@ _LT_EOF
|
|||||||
xlf* | bgf* | bgxlf* | mpixlf*)
|
xlf* | bgf* | bgxlf* | mpixlf*)
|
||||||
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
|
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
|
||||||
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
|
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
|
|
||||||
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
|
_LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
|
||||||
if test "x$supports_anon_versioning" = xyes; then
|
if test "x$supports_anon_versioning" = xyes; then
|
||||||
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
|
_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
|
||||||
@@ -5060,6 +5141,7 @@ _LT_EOF
|
|||||||
# The linker will not automatically build a static lib if we build a DLL.
|
# The linker will not automatically build a static lib if we build a DLL.
|
||||||
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
|
# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
|
||||||
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
|
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
|
||||||
|
_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
|
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
|
||||||
# Don't use ranlib
|
# Don't use ranlib
|
||||||
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
|
_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
|
||||||
@@ -5157,7 +5239,6 @@ _LT_EOF
|
|||||||
fi
|
fi
|
||||||
if test "$with_gnu_ld" = no; then
|
if test "$with_gnu_ld" = no; then
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
|
|
||||||
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
|
_LT_TAGVAR(hardcode_libdir_separator, $1)=:
|
||||||
_LT_TAGVAR(hardcode_direct, $1)=yes
|
_LT_TAGVAR(hardcode_direct, $1)=yes
|
||||||
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
|
_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
|
||||||
@@ -5599,9 +5680,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
|
|||||||
_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
|
_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
|
||||||
[Flag to hardcode $libdir into a binary during linking.
|
[Flag to hardcode $libdir into a binary during linking.
|
||||||
This must work even if $libdir does not exist])
|
This must work even if $libdir does not exist])
|
||||||
_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
|
|
||||||
[[If ld is used when linking, flag to hardcode $libdir into a binary
|
|
||||||
during linking. This must work even if $libdir does not exist]])
|
|
||||||
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
|
_LT_TAGDECL([], [hardcode_libdir_separator], [1],
|
||||||
[Whether we need a single "-rpath" flag with a separated argument])
|
[Whether we need a single "-rpath" flag with a separated argument])
|
||||||
_LT_TAGDECL([], [hardcode_direct], [0],
|
_LT_TAGDECL([], [hardcode_direct], [0],
|
||||||
@@ -5759,7 +5837,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
|
|||||||
_LT_TAGVAR(hardcode_direct, $1)=no
|
_LT_TAGVAR(hardcode_direct, $1)=no
|
||||||
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
|
|
||||||
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
||||||
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
||||||
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
|
_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
|
||||||
@@ -6890,12 +6967,18 @@ public class foo {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
_LT_EOF
|
_LT_EOF
|
||||||
|
], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
|
||||||
|
package foo
|
||||||
|
func foo() {
|
||||||
|
}
|
||||||
|
_LT_EOF
|
||||||
])
|
])
|
||||||
|
|
||||||
_lt_libdeps_save_CFLAGS=$CFLAGS
|
_lt_libdeps_save_CFLAGS=$CFLAGS
|
||||||
case "$CC $CFLAGS " in #(
|
case "$CC $CFLAGS " in #(
|
||||||
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
|
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
|
||||||
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
|
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
|
||||||
|
*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
dnl Parse the compiler output and extract the necessary
|
dnl Parse the compiler output and extract the necessary
|
||||||
@@ -7092,7 +7175,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
|
|||||||
_LT_TAGVAR(hardcode_direct, $1)=no
|
_LT_TAGVAR(hardcode_direct, $1)=no
|
||||||
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
|
|
||||||
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
||||||
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
||||||
_LT_TAGVAR(hardcode_automatic, $1)=no
|
_LT_TAGVAR(hardcode_automatic, $1)=no
|
||||||
@@ -7225,7 +7307,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
|
|||||||
_LT_TAGVAR(hardcode_direct, $1)=no
|
_LT_TAGVAR(hardcode_direct, $1)=no
|
||||||
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
_LT_TAGVAR(hardcode_direct_absolute, $1)=no
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
|
||||||
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
|
|
||||||
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
_LT_TAGVAR(hardcode_libdir_separator, $1)=
|
||||||
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
_LT_TAGVAR(hardcode_minus_L, $1)=no
|
||||||
_LT_TAGVAR(hardcode_automatic, $1)=no
|
_LT_TAGVAR(hardcode_automatic, $1)=no
|
||||||
@@ -7412,6 +7493,77 @@ CFLAGS=$lt_save_CFLAGS
|
|||||||
])# _LT_LANG_GCJ_CONFIG
|
])# _LT_LANG_GCJ_CONFIG
|
||||||
|
|
||||||
|
|
||||||
|
# _LT_LANG_GO_CONFIG([TAG])
|
||||||
|
# --------------------------
|
||||||
|
# Ensure that the configuration variables for the GNU Go compiler
|
||||||
|
# are suitably defined. These variables are subsequently used by _LT_CONFIG
|
||||||
|
# to write the compiler configuration to `libtool'.
|
||||||
|
m4_defun([_LT_LANG_GO_CONFIG],
|
||||||
|
[AC_REQUIRE([LT_PROG_GO])dnl
|
||||||
|
AC_LANG_SAVE
|
||||||
|
|
||||||
|
# Source file extension for Go test sources.
|
||||||
|
ac_ext=go
|
||||||
|
|
||||||
|
# Object file extension for compiled Go test sources.
|
||||||
|
objext=o
|
||||||
|
_LT_TAGVAR(objext, $1)=$objext
|
||||||
|
|
||||||
|
# Code to be used in simple compile tests
|
||||||
|
lt_simple_compile_test_code="package main; func main() { }"
|
||||||
|
|
||||||
|
# Code to be used in simple link tests
|
||||||
|
lt_simple_link_test_code='package main; func main() { }'
|
||||||
|
|
||||||
|
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
|
||||||
|
_LT_TAG_COMPILER
|
||||||
|
|
||||||
|
# save warnings/boilerplate of simple test code
|
||||||
|
_LT_COMPILER_BOILERPLATE
|
||||||
|
_LT_LINKER_BOILERPLATE
|
||||||
|
|
||||||
|
# Allow CC to be a program name with arguments.
|
||||||
|
lt_save_CC=$CC
|
||||||
|
lt_save_CFLAGS=$CFLAGS
|
||||||
|
lt_save_GCC=$GCC
|
||||||
|
GCC=yes
|
||||||
|
CC=${GOC-"gccgo"}
|
||||||
|
CFLAGS=$GOFLAGS
|
||||||
|
compiler=$CC
|
||||||
|
_LT_TAGVAR(compiler, $1)=$CC
|
||||||
|
_LT_TAGVAR(LD, $1)="$LD"
|
||||||
|
_LT_CC_BASENAME([$compiler])
|
||||||
|
|
||||||
|
# Go did not exist at the time GCC didn't implicitly link libc in.
|
||||||
|
_LT_TAGVAR(archive_cmds_need_lc, $1)=no
|
||||||
|
|
||||||
|
_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
|
||||||
|
_LT_TAGVAR(reload_flag, $1)=$reload_flag
|
||||||
|
_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
|
||||||
|
|
||||||
|
## CAVEAT EMPTOR:
|
||||||
|
## There is no encapsulation within the following macros, do not change
|
||||||
|
## the running order or otherwise move them around unless you know exactly
|
||||||
|
## what you are doing...
|
||||||
|
if test -n "$compiler"; then
|
||||||
|
_LT_COMPILER_NO_RTTI($1)
|
||||||
|
_LT_COMPILER_PIC($1)
|
||||||
|
_LT_COMPILER_C_O($1)
|
||||||
|
_LT_COMPILER_FILE_LOCKS($1)
|
||||||
|
_LT_LINKER_SHLIBS($1)
|
||||||
|
_LT_LINKER_HARDCODE_LIBPATH($1)
|
||||||
|
|
||||||
|
_LT_CONFIG($1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_LANG_RESTORE
|
||||||
|
|
||||||
|
GCC=$lt_save_GCC
|
||||||
|
CC=$lt_save_CC
|
||||||
|
CFLAGS=$lt_save_CFLAGS
|
||||||
|
])# _LT_LANG_GO_CONFIG
|
||||||
|
|
||||||
|
|
||||||
# _LT_LANG_RC_CONFIG([TAG])
|
# _LT_LANG_RC_CONFIG([TAG])
|
||||||
# -------------------------
|
# -------------------------
|
||||||
# Ensure that the configuration variables for the Windows resource compiler
|
# Ensure that the configuration variables for the Windows resource compiler
|
||||||
@@ -7481,6 +7633,13 @@ dnl aclocal-1.4 backwards compatibility:
|
|||||||
dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
|
dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
|
||||||
|
|
||||||
|
|
||||||
|
# LT_PROG_GO
|
||||||
|
# ----------
|
||||||
|
AC_DEFUN([LT_PROG_GO],
|
||||||
|
[AC_CHECK_TOOL(GOC, gccgo,)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
# LT_PROG_RC
|
# LT_PROG_RC
|
||||||
# ----------
|
# ----------
|
||||||
AC_DEFUN([LT_PROG_RC],
|
AC_DEFUN([LT_PROG_RC],
|
||||||
|
|||||||
95
config/ltmain.sh
Executable file → Normal file
95
config/ltmain.sh
Executable file → Normal file
@@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
# libtool (GNU libtool) 2.4
|
# libtool (GNU libtool) 2.4.2
|
||||||
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
||||||
# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||||
# This is free software; see the source for copying conditions. There is NO
|
# This is free software; see the source for copying conditions. There is NO
|
||||||
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
# --quiet, --silent don't print informational messages
|
# --quiet, --silent don't print informational messages
|
||||||
# --no-quiet, --no-silent
|
# --no-quiet, --no-silent
|
||||||
# print informational messages (default)
|
# print informational messages (default)
|
||||||
|
# --no-warn don't display warning messages
|
||||||
# --tag=TAG use configuration variables from tag TAG
|
# --tag=TAG use configuration variables from tag TAG
|
||||||
# -v, --verbose print more informational messages than default
|
# -v, --verbose print more informational messages than default
|
||||||
# --no-verbose don't print the extra informational messages
|
# --no-verbose don't print the extra informational messages
|
||||||
@@ -69,7 +70,7 @@
|
|||||||
# compiler: $LTCC
|
# compiler: $LTCC
|
||||||
# compiler flags: $LTCFLAGS
|
# compiler flags: $LTCFLAGS
|
||||||
# linker: $LD (gnu? $with_gnu_ld)
|
# linker: $LD (gnu? $with_gnu_ld)
|
||||||
# $progname: (GNU libtool) 2.4
|
# $progname: (GNU libtool) 2.4.2
|
||||||
# automake: $automake_version
|
# automake: $automake_version
|
||||||
# autoconf: $autoconf_version
|
# autoconf: $autoconf_version
|
||||||
#
|
#
|
||||||
@@ -79,9 +80,9 @@
|
|||||||
|
|
||||||
PROGRAM=libtool
|
PROGRAM=libtool
|
||||||
PACKAGE=libtool
|
PACKAGE=libtool
|
||||||
VERSION=2.4
|
VERSION=2.4.2
|
||||||
TIMESTAMP=""
|
TIMESTAMP=""
|
||||||
package_revision=1.3293
|
package_revision=1.3337
|
||||||
|
|
||||||
# Be Bourne compatible
|
# Be Bourne compatible
|
||||||
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
||||||
@@ -136,15 +137,10 @@ progpath="$0"
|
|||||||
|
|
||||||
: ${CP="cp -f"}
|
: ${CP="cp -f"}
|
||||||
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
||||||
: ${EGREP="grep -E"}
|
|
||||||
: ${FGREP="grep -F"}
|
|
||||||
: ${GREP="grep"}
|
|
||||||
: ${LN_S="ln -s"}
|
|
||||||
: ${MAKE="make"}
|
: ${MAKE="make"}
|
||||||
: ${MKDIR="mkdir"}
|
: ${MKDIR="mkdir"}
|
||||||
: ${MV="mv -f"}
|
: ${MV="mv -f"}
|
||||||
: ${RM="rm -f"}
|
: ${RM="rm -f"}
|
||||||
: ${SED="sed"}
|
|
||||||
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
|
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
|
||||||
: ${Xsed="$SED -e 1s/^X//"}
|
: ${Xsed="$SED -e 1s/^X//"}
|
||||||
|
|
||||||
@@ -387,7 +383,7 @@ case $progpath in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
save_IFS="$IFS"
|
save_IFS="$IFS"
|
||||||
IFS=:
|
IFS=${PATH_SEPARATOR-:}
|
||||||
for progdir in $PATH; do
|
for progdir in $PATH; do
|
||||||
IFS="$save_IFS"
|
IFS="$save_IFS"
|
||||||
test -x "$progdir/$progname" && break
|
test -x "$progdir/$progname" && break
|
||||||
@@ -771,8 +767,8 @@ func_help ()
|
|||||||
s*\$LTCFLAGS*'"$LTCFLAGS"'*
|
s*\$LTCFLAGS*'"$LTCFLAGS"'*
|
||||||
s*\$LD*'"$LD"'*
|
s*\$LD*'"$LD"'*
|
||||||
s/\$with_gnu_ld/'"$with_gnu_ld"'/
|
s/\$with_gnu_ld/'"$with_gnu_ld"'/
|
||||||
s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
|
s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
|
||||||
s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
|
s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
|
||||||
p
|
p
|
||||||
d
|
d
|
||||||
}
|
}
|
||||||
@@ -1052,6 +1048,7 @@ opt_finish=false
|
|||||||
opt_help=false
|
opt_help=false
|
||||||
opt_help_all=false
|
opt_help_all=false
|
||||||
opt_silent=:
|
opt_silent=:
|
||||||
|
opt_warning=:
|
||||||
opt_verbose=:
|
opt_verbose=:
|
||||||
opt_silent=false
|
opt_silent=false
|
||||||
opt_verbose=false
|
opt_verbose=false
|
||||||
@@ -1118,6 +1115,10 @@ esac
|
|||||||
;;
|
;;
|
||||||
--no-silent|--no-quiet)
|
--no-silent|--no-quiet)
|
||||||
opt_silent=false
|
opt_silent=false
|
||||||
|
func_append preserve_args " $opt"
|
||||||
|
;;
|
||||||
|
--no-warning|--no-warn)
|
||||||
|
opt_warning=false
|
||||||
func_append preserve_args " $opt"
|
func_append preserve_args " $opt"
|
||||||
;;
|
;;
|
||||||
--no-verbose)
|
--no-verbose)
|
||||||
@@ -2089,7 +2090,7 @@ func_mode_compile ()
|
|||||||
*.[cCFSifmso] | \
|
*.[cCFSifmso] | \
|
||||||
*.ada | *.adb | *.ads | *.asm | \
|
*.ada | *.adb | *.ads | *.asm | \
|
||||||
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
|
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
|
||||||
*.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
|
*.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
|
||||||
func_xform "$libobj"
|
func_xform "$libobj"
|
||||||
libobj=$func_xform_result
|
libobj=$func_xform_result
|
||||||
;;
|
;;
|
||||||
@@ -3231,11 +3232,13 @@ func_mode_install ()
|
|||||||
|
|
||||||
# Set up the ranlib parameters.
|
# Set up the ranlib parameters.
|
||||||
oldlib="$destdir/$name"
|
oldlib="$destdir/$name"
|
||||||
|
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
|
||||||
|
tool_oldlib=$func_to_tool_file_result
|
||||||
|
|
||||||
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
|
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
|
||||||
|
|
||||||
if test -n "$stripme" && test -n "$old_striplib"; then
|
if test -n "$stripme" && test -n "$old_striplib"; then
|
||||||
func_show_eval "$old_striplib $oldlib" 'exit $?'
|
func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Do each command in the postinstall commands.
|
# Do each command in the postinstall commands.
|
||||||
@@ -3500,7 +3503,7 @@ static const void *lt_preloaded_setup() {
|
|||||||
# linked before any other PIC object. But we must not use
|
# linked before any other PIC object. But we must not use
|
||||||
# pic_flag when linking with -static. The problem exists in
|
# pic_flag when linking with -static. The problem exists in
|
||||||
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
|
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
|
||||||
*-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
|
*-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
|
||||||
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
|
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
|
||||||
*-*-hpux*)
|
*-*-hpux*)
|
||||||
pic_flag_for_symtable=" $pic_flag" ;;
|
pic_flag_for_symtable=" $pic_flag" ;;
|
||||||
@@ -4015,14 +4018,17 @@ func_exec_program_core ()
|
|||||||
# launches target application with the remaining arguments.
|
# launches target application with the remaining arguments.
|
||||||
func_exec_program ()
|
func_exec_program ()
|
||||||
{
|
{
|
||||||
for lt_wr_arg
|
case \" \$* \" in
|
||||||
do
|
*\\ --lt-*)
|
||||||
case \$lt_wr_arg in
|
for lt_wr_arg
|
||||||
--lt-*) ;;
|
do
|
||||||
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
|
case \$lt_wr_arg in
|
||||||
esac
|
--lt-*) ;;
|
||||||
shift
|
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
|
||||||
done
|
esac
|
||||||
|
shift
|
||||||
|
done ;;
|
||||||
|
esac
|
||||||
func_exec_program_core \${1+\"\$@\"}
|
func_exec_program_core \${1+\"\$@\"}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5090,9 +5096,15 @@ void lt_dump_script (FILE* f)
|
|||||||
{
|
{
|
||||||
EOF
|
EOF
|
||||||
func_emit_wrapper yes |
|
func_emit_wrapper yes |
|
||||||
$SED -e 's/\([\\"]\)/\\\1/g' \
|
$SED -n -e '
|
||||||
-e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
|
s/^\(.\{79\}\)\(..*\)/\1\
|
||||||
|
\2/
|
||||||
|
h
|
||||||
|
s/\([\\"]\)/\\\1/g
|
||||||
|
s/$/\\n/
|
||||||
|
s/\([^\n]*\).*/ fputs ("\1", f);/p
|
||||||
|
g
|
||||||
|
D'
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
@@ -5677,7 +5689,8 @@ func_mode_link ()
|
|||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
|
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|
||||||
|
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
|
||||||
func_append compiler_flags " $arg"
|
func_append compiler_flags " $arg"
|
||||||
func_append compile_command " $arg"
|
func_append compile_command " $arg"
|
||||||
func_append finalize_command " $arg"
|
func_append finalize_command " $arg"
|
||||||
@@ -6181,7 +6194,8 @@ func_mode_link ()
|
|||||||
lib=
|
lib=
|
||||||
found=no
|
found=no
|
||||||
case $deplib in
|
case $deplib in
|
||||||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
|
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|
||||||
|
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
|
||||||
if test "$linkmode,$pass" = "prog,link"; then
|
if test "$linkmode,$pass" = "prog,link"; then
|
||||||
compile_deplibs="$deplib $compile_deplibs"
|
compile_deplibs="$deplib $compile_deplibs"
|
||||||
finalize_deplibs="$deplib $finalize_deplibs"
|
finalize_deplibs="$deplib $finalize_deplibs"
|
||||||
@@ -6882,7 +6896,7 @@ func_mode_link ()
|
|||||||
test "$hardcode_direct_absolute" = no; then
|
test "$hardcode_direct_absolute" = no; then
|
||||||
add="$dir/$linklib"
|
add="$dir/$linklib"
|
||||||
elif test "$hardcode_minus_L" = yes; then
|
elif test "$hardcode_minus_L" = yes; then
|
||||||
add_dir="-L$dir"
|
add_dir="-L$absdir"
|
||||||
# Try looking first in the location we're being installed to.
|
# Try looking first in the location we're being installed to.
|
||||||
if test -n "$inst_prefix_dir"; then
|
if test -n "$inst_prefix_dir"; then
|
||||||
case $libdir in
|
case $libdir in
|
||||||
@@ -7367,6 +7381,7 @@ func_mode_link ()
|
|||||||
# which has an extra 1 added just for fun
|
# which has an extra 1 added just for fun
|
||||||
#
|
#
|
||||||
case $version_type in
|
case $version_type in
|
||||||
|
# correct linux to gnu/linux during the next big refactor
|
||||||
darwin|linux|osf|windows|none)
|
darwin|linux|osf|windows|none)
|
||||||
func_arith $number_major + $number_minor
|
func_arith $number_major + $number_minor
|
||||||
current=$func_arith_result
|
current=$func_arith_result
|
||||||
@@ -7483,7 +7498,7 @@ func_mode_link ()
|
|||||||
versuffix="$major.$revision"
|
versuffix="$major.$revision"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
linux)
|
linux) # correct to gnu/linux during the next big refactor
|
||||||
func_arith $current - $age
|
func_arith $current - $age
|
||||||
major=.$func_arith_result
|
major=.$func_arith_result
|
||||||
versuffix="$major.$age.$revision"
|
versuffix="$major.$age.$revision"
|
||||||
@@ -8071,6 +8086,11 @@ EOF
|
|||||||
|
|
||||||
# Test again, we may have decided not to build it any more
|
# Test again, we may have decided not to build it any more
|
||||||
if test "$build_libtool_libs" = yes; then
|
if test "$build_libtool_libs" = yes; then
|
||||||
|
# Remove ${wl} instances when linking with ld.
|
||||||
|
# FIXME: should test the right _cmds variable.
|
||||||
|
case $archive_cmds in
|
||||||
|
*\$LD\ *) wl= ;;
|
||||||
|
esac
|
||||||
if test "$hardcode_into_libs" = yes; then
|
if test "$hardcode_into_libs" = yes; then
|
||||||
# Hardcode the library paths
|
# Hardcode the library paths
|
||||||
hardcode_libdirs=
|
hardcode_libdirs=
|
||||||
@@ -8101,7 +8121,7 @@ EOF
|
|||||||
elif test -n "$runpath_var"; then
|
elif test -n "$runpath_var"; then
|
||||||
case "$perm_rpath " in
|
case "$perm_rpath " in
|
||||||
*" $libdir "*) ;;
|
*" $libdir "*) ;;
|
||||||
*) func_apped perm_rpath " $libdir" ;;
|
*) func_append perm_rpath " $libdir" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -8109,11 +8129,7 @@ EOF
|
|||||||
if test -n "$hardcode_libdir_separator" &&
|
if test -n "$hardcode_libdir_separator" &&
|
||||||
test -n "$hardcode_libdirs"; then
|
test -n "$hardcode_libdirs"; then
|
||||||
libdir="$hardcode_libdirs"
|
libdir="$hardcode_libdirs"
|
||||||
if test -n "$hardcode_libdir_flag_spec_ld"; then
|
eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
|
||||||
eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
|
|
||||||
else
|
|
||||||
eval dep_rpath=\"$hardcode_libdir_flag_spec\"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if test -n "$runpath_var" && test -n "$perm_rpath"; then
|
if test -n "$runpath_var" && test -n "$perm_rpath"; then
|
||||||
# We should set the runpath_var.
|
# We should set the runpath_var.
|
||||||
@@ -9203,6 +9219,8 @@ EOF
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
|
||||||
|
tool_oldlib=$func_to_tool_file_result
|
||||||
eval cmds=\"$old_archive_cmds\"
|
eval cmds=\"$old_archive_cmds\"
|
||||||
|
|
||||||
func_len " $cmds"
|
func_len " $cmds"
|
||||||
@@ -9312,7 +9330,8 @@ EOF
|
|||||||
*.la)
|
*.la)
|
||||||
func_basename "$deplib"
|
func_basename "$deplib"
|
||||||
name="$func_basename_result"
|
name="$func_basename_result"
|
||||||
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
|
func_resolve_sysroot "$deplib"
|
||||||
|
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
|
||||||
test -z "$libdir" && \
|
test -z "$libdir" && \
|
||||||
func_fatal_error "\`$deplib' is not a valid libtool archive"
|
func_fatal_error "\`$deplib' is not a valid libtool archive"
|
||||||
func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
|
func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
|
||||||
|
|||||||
19
config/ltoptions.m4
vendored
19
config/ltoptions.m4
vendored
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
|||||||
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
||||||
m4_define([_LT_WITH_PIC],
|
m4_define([_LT_WITH_PIC],
|
||||||
[AC_ARG_WITH([pic],
|
[AC_ARG_WITH([pic],
|
||||||
[AS_HELP_STRING([--with-pic],
|
[AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
|
||||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
||||||
[pic_mode="$withval"],
|
[lt_p=${PACKAGE-default}
|
||||||
|
case $withval in
|
||||||
|
yes|no) pic_mode=$withval ;;
|
||||||
|
*)
|
||||||
|
pic_mode=default
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||||
|
for lt_pkg in $withval; do
|
||||||
|
IFS="$lt_save_ifs"
|
||||||
|
if test "X$lt_pkg" = "X$lt_p"; then
|
||||||
|
pic_mode=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$lt_save_ifs"
|
||||||
|
;;
|
||||||
|
esac],
|
||||||
[pic_mode=default])
|
[pic_mode=default])
|
||||||
|
|
||||||
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
||||||
|
|||||||
10
config/ltversion.m4
vendored
10
config/ltversion.m4
vendored
@@ -9,15 +9,15 @@
|
|||||||
|
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# serial 3293 ltversion.m4
|
# serial 3337 ltversion.m4
|
||||||
# This file is part of GNU Libtool
|
# This file is part of GNU Libtool
|
||||||
|
|
||||||
m4_define([LT_PACKAGE_VERSION], [2.4])
|
m4_define([LT_PACKAGE_VERSION], [2.4.2])
|
||||||
m4_define([LT_PACKAGE_REVISION], [1.3293])
|
m4_define([LT_PACKAGE_REVISION], [1.3337])
|
||||||
|
|
||||||
AC_DEFUN([LTVERSION_VERSION],
|
AC_DEFUN([LTVERSION_VERSION],
|
||||||
[macro_version='2.4'
|
[macro_version='2.4.2'
|
||||||
macro_revision='1.3293'
|
macro_revision='1.3337'
|
||||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
||||||
_LT_DECL(, macro_revision, 0)
|
_LT_DECL(, macro_revision, 0)
|
||||||
])
|
])
|
||||||
|
|||||||
354
configure
vendored
354
configure
vendored
@@ -1409,7 +1409,7 @@ Optional Features:
|
|||||||
Optional Packages:
|
Optional Packages:
|
||||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||||
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
||||||
--with-pic try to use only PIC/non-PIC objects [default=use
|
--with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
|
||||||
both]
|
both]
|
||||||
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
|
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
|
||||||
--with-sysroot=DIR Search for dependent libraries within DIR
|
--with-sysroot=DIR Search for dependent libraries within DIR
|
||||||
@@ -2039,6 +2039,52 @@ $as_echo "$ac_res" >&6; }
|
|||||||
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
|
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
|
||||||
|
|
||||||
} # ac_fn_c_check_type
|
} # ac_fn_c_check_type
|
||||||
|
|
||||||
|
# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
|
||||||
|
# ---------------------------------------------
|
||||||
|
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
|
||||||
|
# accordingly.
|
||||||
|
ac_fn_c_check_decl ()
|
||||||
|
{
|
||||||
|
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
||||||
|
as_decl_name=`echo $2|sed 's/ *(.*//'`
|
||||||
|
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
|
||||||
|
$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
|
||||||
|
if eval \${$3+:} false; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
$4
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
#ifndef $as_decl_name
|
||||||
|
#ifdef __cplusplus
|
||||||
|
(void) $as_decl_use;
|
||||||
|
#else
|
||||||
|
(void) $as_decl_name;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_compile "$LINENO"; then :
|
||||||
|
eval "$3=yes"
|
||||||
|
else
|
||||||
|
eval "$3=no"
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
fi
|
||||||
|
eval ac_res=\$$3
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
||||||
|
$as_echo "$ac_res" >&6; }
|
||||||
|
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
|
||||||
|
|
||||||
|
} # ac_fn_c_check_decl
|
||||||
cat >config.log <<_ACEOF
|
cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
@@ -2926,8 +2972,8 @@ esac
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
macro_version='2.4'
|
macro_version='2.4.2'
|
||||||
macro_revision='1.3293'
|
macro_revision='1.3337'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4752,6 +4798,11 @@ else
|
|||||||
lt_cv_sys_max_cmd_len=196608
|
lt_cv_sys_max_cmd_len=196608
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
os2*)
|
||||||
|
# The test takes a long time on OS/2.
|
||||||
|
lt_cv_sys_max_cmd_len=8192
|
||||||
|
;;
|
||||||
|
|
||||||
osf*)
|
osf*)
|
||||||
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
|
# Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
|
||||||
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
|
# due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
|
||||||
@@ -4791,7 +4842,7 @@ else
|
|||||||
# If test is not a shell built-in, we'll probably end up computing a
|
# If test is not a shell built-in, we'll probably end up computing a
|
||||||
# maximum length that is only half of the actual maximum length, but
|
# maximum length that is only half of the actual maximum length, but
|
||||||
# we can't tell.
|
# we can't tell.
|
||||||
while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
|
while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
|
||||||
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
|
= "X$teststring$teststring"; } >/dev/null 2>&1 &&
|
||||||
test $i != 17 # 1/2 MB should be enough
|
test $i != 17 # 1/2 MB should be enough
|
||||||
do
|
do
|
||||||
@@ -5220,7 +5271,7 @@ irix5* | irix6* | nonstopux*)
|
|||||||
lt_cv_deplibs_check_method=pass_all
|
lt_cv_deplibs_check_method=pass_all
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# This must be Linux ELF.
|
# This must be glibc/ELF.
|
||||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||||
lt_cv_deplibs_check_method=pass_all
|
lt_cv_deplibs_check_method=pass_all
|
||||||
;;
|
;;
|
||||||
@@ -5861,13 +5912,13 @@ old_postuninstall_cmds=
|
|||||||
if test -n "$RANLIB"; then
|
if test -n "$RANLIB"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
openbsd*)
|
openbsd*)
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
|
old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
|
old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
@@ -6014,6 +6065,7 @@ for ac_symprfx in "" "_"; do
|
|||||||
# which start with @ or ?.
|
# which start with @ or ?.
|
||||||
lt_cv_sys_global_symbol_pipe="$AWK '"\
|
lt_cv_sys_global_symbol_pipe="$AWK '"\
|
||||||
" {last_section=section; section=\$ 3};"\
|
" {last_section=section; section=\$ 3};"\
|
||||||
|
" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
|
||||||
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
|
" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
|
||||||
" \$ 0!~/External *\|/{next};"\
|
" \$ 0!~/External *\|/{next};"\
|
||||||
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
|
" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
|
||||||
@@ -6402,7 +6454,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
|
|||||||
CFLAGS="$SAVE_CFLAGS"
|
CFLAGS="$SAVE_CFLAGS"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
sparc*-*solaris*)
|
*-*solaris*)
|
||||||
# Find out which ABI we are using.
|
# Find out which ABI we are using.
|
||||||
echo 'int i;' > conftest.$ac_ext
|
echo 'int i;' > conftest.$ac_ext
|
||||||
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
|
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
|
||||||
@@ -6413,7 +6465,20 @@ sparc*-*solaris*)
|
|||||||
case `/usr/bin/file conftest.o` in
|
case `/usr/bin/file conftest.o` in
|
||||||
*64-bit*)
|
*64-bit*)
|
||||||
case $lt_cv_prog_gnu_ld in
|
case $lt_cv_prog_gnu_ld in
|
||||||
yes*) LD="${LD-ld} -m elf64_sparc" ;;
|
yes*)
|
||||||
|
case $host in
|
||||||
|
i?86-*-solaris*)
|
||||||
|
LD="${LD-ld} -m elf_x86_64"
|
||||||
|
;;
|
||||||
|
sparc*-*-solaris*)
|
||||||
|
LD="${LD-ld} -m elf64_sparc"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
# GNU ld 2.21 introduced _sol2 emulations. Use them if available.
|
||||||
|
if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
|
||||||
|
LD="${LD-ld}_sol2"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
|
if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
|
||||||
LD="${LD-ld} -64"
|
LD="${LD-ld} -64"
|
||||||
@@ -7053,7 +7118,13 @@ else
|
|||||||
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
|
$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
|
||||||
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
|
-dynamiclib -Wl,-single_module conftest.c 2>conftest.err
|
||||||
_lt_result=$?
|
_lt_result=$?
|
||||||
if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
|
# If there is a non-empty error log, and "single_module"
|
||||||
|
# appears in it, assume the flag caused a linker warning
|
||||||
|
if test -s conftest.err && $GREP single_module conftest.err; then
|
||||||
|
cat conftest.err >&5
|
||||||
|
# Otherwise, if the output was created with a 0 exit code from
|
||||||
|
# the compiler, it worked.
|
||||||
|
elif test -f libconftest.dylib && test $_lt_result -eq 0; then
|
||||||
lt_cv_apple_cc_single_mod=yes
|
lt_cv_apple_cc_single_mod=yes
|
||||||
else
|
else
|
||||||
cat conftest.err >&5
|
cat conftest.err >&5
|
||||||
@@ -7064,6 +7135,7 @@ else
|
|||||||
fi
|
fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
|
||||||
$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
|
$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
|
||||||
$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
|
$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
|
||||||
if ${lt_cv_ld_exported_symbols_list+:} false; then :
|
if ${lt_cv_ld_exported_symbols_list+:} false; then :
|
||||||
@@ -7096,6 +7168,7 @@ rm -f core conftest.err conftest.$ac_objext \
|
|||||||
fi
|
fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
|
||||||
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
|
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
|
||||||
$as_echo_n "checking for -force_load linker flag... " >&6; }
|
$as_echo_n "checking for -force_load linker flag... " >&6; }
|
||||||
if ${lt_cv_ld_force_load+:} false; then :
|
if ${lt_cv_ld_force_load+:} false; then :
|
||||||
@@ -7117,7 +7190,9 @@ _LT_EOF
|
|||||||
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
|
echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
|
||||||
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
|
$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
|
||||||
_lt_result=$?
|
_lt_result=$?
|
||||||
if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
|
if test -s conftest.err && $GREP force_load conftest.err; then
|
||||||
|
cat conftest.err >&5
|
||||||
|
elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
|
||||||
lt_cv_ld_force_load=yes
|
lt_cv_ld_force_load=yes
|
||||||
else
|
else
|
||||||
cat conftest.err >&5
|
cat conftest.err >&5
|
||||||
@@ -7522,7 +7597,22 @@ fi
|
|||||||
|
|
||||||
# Check whether --with-pic was given.
|
# Check whether --with-pic was given.
|
||||||
if test "${with_pic+set}" = set; then :
|
if test "${with_pic+set}" = set; then :
|
||||||
withval=$with_pic; pic_mode="$withval"
|
withval=$with_pic; lt_p=${PACKAGE-default}
|
||||||
|
case $withval in
|
||||||
|
yes|no) pic_mode=$withval ;;
|
||||||
|
*)
|
||||||
|
pic_mode=default
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
||||||
|
for lt_pkg in $withval; do
|
||||||
|
IFS="$lt_save_ifs"
|
||||||
|
if test "X$lt_pkg" = "X$lt_p"; then
|
||||||
|
pic_mode=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$lt_save_ifs"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
pic_mode=default
|
pic_mode=default
|
||||||
fi
|
fi
|
||||||
@@ -7595,6 +7685,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -8059,7 +8153,9 @@ lt_prog_compiler_static=
|
|||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
nvcc*) # Cuda Compiler Driver 2.2
|
nvcc*) # Cuda Compiler Driver 2.2
|
||||||
lt_prog_compiler_wl='-Xlinker '
|
lt_prog_compiler_wl='-Xlinker '
|
||||||
lt_prog_compiler_pic='-Xcompiler -fPIC'
|
if test -n "$lt_prog_compiler_pic"; then
|
||||||
|
lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
@@ -8150,18 +8246,33 @@ lt_prog_compiler_static=
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
case `$CC -V 2>&1 | sed 5q` in
|
case `$CC -V 2>&1 | sed 5q` in
|
||||||
*Sun\ F* | *Sun*Fortran*)
|
*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
|
||||||
# Sun Fortran 8.3 passes all unrecognized flags to the linker
|
# Sun Fortran 8.3 passes all unrecognized flags to the linker
|
||||||
lt_prog_compiler_pic='-KPIC'
|
lt_prog_compiler_pic='-KPIC'
|
||||||
lt_prog_compiler_static='-Bstatic'
|
lt_prog_compiler_static='-Bstatic'
|
||||||
lt_prog_compiler_wl=''
|
lt_prog_compiler_wl=''
|
||||||
;;
|
;;
|
||||||
|
*Sun\ F* | *Sun*Fortran*)
|
||||||
|
lt_prog_compiler_pic='-KPIC'
|
||||||
|
lt_prog_compiler_static='-Bstatic'
|
||||||
|
lt_prog_compiler_wl='-Qoption ld '
|
||||||
|
;;
|
||||||
*Sun\ C*)
|
*Sun\ C*)
|
||||||
# Sun C 5.9
|
# Sun C 5.9
|
||||||
lt_prog_compiler_pic='-KPIC'
|
lt_prog_compiler_pic='-KPIC'
|
||||||
lt_prog_compiler_static='-Bstatic'
|
lt_prog_compiler_static='-Bstatic'
|
||||||
lt_prog_compiler_wl='-Wl,'
|
lt_prog_compiler_wl='-Wl,'
|
||||||
;;
|
;;
|
||||||
|
*Intel*\ [CF]*Compiler*)
|
||||||
|
lt_prog_compiler_wl='-Wl,'
|
||||||
|
lt_prog_compiler_pic='-fPIC'
|
||||||
|
lt_prog_compiler_static='-static'
|
||||||
|
;;
|
||||||
|
*Portland\ Group*)
|
||||||
|
lt_prog_compiler_wl='-Wl,'
|
||||||
|
lt_prog_compiler_pic='-fpic'
|
||||||
|
lt_prog_compiler_static='-Bstatic'
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -8523,7 +8634,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
|
|||||||
hardcode_direct=no
|
hardcode_direct=no
|
||||||
hardcode_direct_absolute=no
|
hardcode_direct_absolute=no
|
||||||
hardcode_libdir_flag_spec=
|
hardcode_libdir_flag_spec=
|
||||||
hardcode_libdir_flag_spec_ld=
|
|
||||||
hardcode_libdir_separator=
|
hardcode_libdir_separator=
|
||||||
hardcode_minus_L=no
|
hardcode_minus_L=no
|
||||||
hardcode_shlibpath_var=unsupported
|
hardcode_shlibpath_var=unsupported
|
||||||
@@ -8773,8 +8883,7 @@ _LT_EOF
|
|||||||
xlf* | bgf* | bgxlf* | mpixlf*)
|
xlf* | bgf* | bgxlf* | mpixlf*)
|
||||||
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
|
# IBM XL Fortran 10.1 on PPC cannot create shared libs itself
|
||||||
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
|
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
|
||||||
hardcode_libdir_flag_spec=
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
hardcode_libdir_flag_spec_ld='-rpath $libdir'
|
|
||||||
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
|
archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
|
||||||
if test "x$supports_anon_versioning" = xyes; then
|
if test "x$supports_anon_versioning" = xyes; then
|
||||||
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
|
archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
|
||||||
@@ -9153,6 +9262,7 @@ fi
|
|||||||
# The linker will not automatically build a static lib if we build a DLL.
|
# The linker will not automatically build a static lib if we build a DLL.
|
||||||
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
|
# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
|
||||||
enable_shared_with_static_runtimes=yes
|
enable_shared_with_static_runtimes=yes
|
||||||
|
exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
|
export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
|
||||||
# Don't use ranlib
|
# Don't use ranlib
|
||||||
old_postinstall_cmds='chmod 644 $oldlib'
|
old_postinstall_cmds='chmod 644 $oldlib'
|
||||||
@@ -9198,6 +9308,7 @@ fi
|
|||||||
hardcode_shlibpath_var=unsupported
|
hardcode_shlibpath_var=unsupported
|
||||||
if test "$lt_cv_ld_force_load" = "yes"; then
|
if test "$lt_cv_ld_force_load" = "yes"; then
|
||||||
whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
|
whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
|
||||||
|
|
||||||
else
|
else
|
||||||
whole_archive_flag_spec=''
|
whole_archive_flag_spec=''
|
||||||
fi
|
fi
|
||||||
@@ -9277,7 +9388,6 @@ fi
|
|||||||
fi
|
fi
|
||||||
if test "$with_gnu_ld" = no; then
|
if test "$with_gnu_ld" = no; then
|
||||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||||
hardcode_libdir_flag_spec_ld='+b $libdir'
|
|
||||||
hardcode_libdir_separator=:
|
hardcode_libdir_separator=:
|
||||||
hardcode_direct=yes
|
hardcode_direct=yes
|
||||||
hardcode_direct_absolute=yes
|
hardcode_direct_absolute=yes
|
||||||
@@ -9895,11 +10005,6 @@ esac
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -9995,7 +10100,7 @@ need_version=unknown
|
|||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
aix3*)
|
aix3*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
|
||||||
shlibpath_var=LIBPATH
|
shlibpath_var=LIBPATH
|
||||||
|
|
||||||
@@ -10004,7 +10109,7 @@ aix3*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
aix[4-9]*)
|
aix[4-9]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
hardcode_into_libs=yes
|
hardcode_into_libs=yes
|
||||||
@@ -10069,7 +10174,7 @@ beos*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
bsdi[45]*)
|
bsdi[45]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
@@ -10208,7 +10313,7 @@ darwin* | rhapsody*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
dgux*)
|
dgux*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
|
||||||
@@ -10261,17 +10366,18 @@ freebsd* | dragonfly*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
gnu*)
|
gnu*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
|
shlibpath_overrides_runpath=no
|
||||||
hardcode_into_libs=yes
|
hardcode_into_libs=yes
|
||||||
;;
|
;;
|
||||||
|
|
||||||
haiku*)
|
haiku*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
dynamic_linker="$host_os runtime_loader"
|
dynamic_linker="$host_os runtime_loader"
|
||||||
@@ -10332,7 +10438,7 @@ hpux9* | hpux10* | hpux11*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
interix[3-9]*)
|
interix[3-9]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
|
||||||
@@ -10348,7 +10454,7 @@ irix5* | irix6* | nonstopux*)
|
|||||||
nonstopux*) version_type=nonstopux ;;
|
nonstopux*) version_type=nonstopux ;;
|
||||||
*)
|
*)
|
||||||
if test "$lt_cv_prog_gnu_ld" = yes; then
|
if test "$lt_cv_prog_gnu_ld" = yes; then
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
else
|
else
|
||||||
version_type=irix
|
version_type=irix
|
||||||
fi ;;
|
fi ;;
|
||||||
@@ -10385,9 +10491,9 @@ linux*oldld* | linux*aout* | linux*coff*)
|
|||||||
dynamic_linker=no
|
dynamic_linker=no
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# This must be Linux ELF.
|
# This must be glibc/ELF.
|
||||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -10469,7 +10575,7 @@ netbsd*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
newsos6)
|
newsos6)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
shlibpath_overrides_runpath=yes
|
shlibpath_overrides_runpath=yes
|
||||||
@@ -10538,7 +10644,7 @@ rdos*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
solaris*)
|
solaris*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -10563,7 +10669,7 @@ sunos4*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
sysv4 | sysv4.3*)
|
sysv4 | sysv4.3*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -10587,7 +10693,7 @@ sysv4 | sysv4.3*)
|
|||||||
|
|
||||||
sysv4*MP*)
|
sysv4*MP*)
|
||||||
if test -d /usr/nec ;then
|
if test -d /usr/nec ;then
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
|
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
|
||||||
soname_spec='$libname${shared_ext}.$major'
|
soname_spec='$libname${shared_ext}.$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -10618,7 +10724,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
|||||||
|
|
||||||
tpf*)
|
tpf*)
|
||||||
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
|
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -10628,7 +10734,7 @@ tpf*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
uts4*)
|
uts4*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -11410,6 +11516,8 @@ CC="$lt_save_CC"
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ac_config_commands="$ac_config_commands libtool"
|
ac_config_commands="$ac_config_commands libtool"
|
||||||
|
|
||||||
|
|
||||||
@@ -11972,7 +12080,6 @@ export_dynamic_flag_spec_CXX=
|
|||||||
hardcode_direct_CXX=no
|
hardcode_direct_CXX=no
|
||||||
hardcode_direct_absolute_CXX=no
|
hardcode_direct_absolute_CXX=no
|
||||||
hardcode_libdir_flag_spec_CXX=
|
hardcode_libdir_flag_spec_CXX=
|
||||||
hardcode_libdir_flag_spec_ld_CXX=
|
|
||||||
hardcode_libdir_separator_CXX=
|
hardcode_libdir_separator_CXX=
|
||||||
hardcode_minus_L_CXX=no
|
hardcode_minus_L_CXX=no
|
||||||
hardcode_shlibpath_var_CXX=unsupported
|
hardcode_shlibpath_var_CXX=unsupported
|
||||||
@@ -12556,6 +12663,7 @@ fi
|
|||||||
hardcode_shlibpath_var_CXX=unsupported
|
hardcode_shlibpath_var_CXX=unsupported
|
||||||
if test "$lt_cv_ld_force_load" = "yes"; then
|
if test "$lt_cv_ld_force_load" = "yes"; then
|
||||||
whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
|
whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
|
||||||
|
|
||||||
else
|
else
|
||||||
whole_archive_flag_spec_CXX=''
|
whole_archive_flag_spec_CXX=''
|
||||||
fi
|
fi
|
||||||
@@ -13276,6 +13384,7 @@ _lt_libdeps_save_CFLAGS=$CFLAGS
|
|||||||
case "$CC $CFLAGS " in #(
|
case "$CC $CFLAGS " in #(
|
||||||
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
|
*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
|
||||||
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
|
*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
|
||||||
|
*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
|
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
|
||||||
@@ -14065,7 +14174,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
|
|||||||
;;
|
;;
|
||||||
cygwin* | mingw* | cegcc*)
|
cygwin* | mingw* | cegcc*)
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
cl*) ;;
|
cl*)
|
||||||
|
exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
|
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
|
||||||
exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
|
exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
|
||||||
@@ -14215,8 +14326,6 @@ esac
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -14245,7 +14354,7 @@ need_version=unknown
|
|||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
aix3*)
|
aix3*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
|
||||||
shlibpath_var=LIBPATH
|
shlibpath_var=LIBPATH
|
||||||
|
|
||||||
@@ -14254,7 +14363,7 @@ aix3*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
aix[4-9]*)
|
aix[4-9]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
hardcode_into_libs=yes
|
hardcode_into_libs=yes
|
||||||
@@ -14319,7 +14428,7 @@ beos*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
bsdi[45]*)
|
bsdi[45]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
@@ -14456,7 +14565,7 @@ darwin* | rhapsody*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
dgux*)
|
dgux*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
|
||||||
@@ -14509,17 +14618,18 @@ freebsd* | dragonfly*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
gnu*)
|
gnu*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
|
shlibpath_overrides_runpath=no
|
||||||
hardcode_into_libs=yes
|
hardcode_into_libs=yes
|
||||||
;;
|
;;
|
||||||
|
|
||||||
haiku*)
|
haiku*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
dynamic_linker="$host_os runtime_loader"
|
dynamic_linker="$host_os runtime_loader"
|
||||||
@@ -14580,7 +14690,7 @@ hpux9* | hpux10* | hpux11*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
interix[3-9]*)
|
interix[3-9]*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
|
||||||
@@ -14596,7 +14706,7 @@ irix5* | irix6* | nonstopux*)
|
|||||||
nonstopux*) version_type=nonstopux ;;
|
nonstopux*) version_type=nonstopux ;;
|
||||||
*)
|
*)
|
||||||
if test "$lt_cv_prog_gnu_ld" = yes; then
|
if test "$lt_cv_prog_gnu_ld" = yes; then
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
else
|
else
|
||||||
version_type=irix
|
version_type=irix
|
||||||
fi ;;
|
fi ;;
|
||||||
@@ -14633,9 +14743,9 @@ linux*oldld* | linux*aout* | linux*coff*)
|
|||||||
dynamic_linker=no
|
dynamic_linker=no
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# This must be Linux ELF.
|
# This must be glibc/ELF.
|
||||||
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
linux* | k*bsd*-gnu | kopensolaris*-gnu)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -14717,7 +14827,7 @@ netbsd*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
newsos6)
|
newsos6)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
shlibpath_overrides_runpath=yes
|
shlibpath_overrides_runpath=yes
|
||||||
@@ -14786,7 +14896,7 @@ rdos*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
solaris*)
|
solaris*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -14811,7 +14921,7 @@ sunos4*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
sysv4 | sysv4.3*)
|
sysv4 | sysv4.3*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -14835,7 +14945,7 @@ sysv4 | sysv4.3*)
|
|||||||
|
|
||||||
sysv4*MP*)
|
sysv4*MP*)
|
||||||
if test -d /usr/nec ;then
|
if test -d /usr/nec ;then
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
|
library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
|
||||||
soname_spec='$libname${shared_ext}.$major'
|
soname_spec='$libname${shared_ext}.$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -14866,7 +14976,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
|||||||
|
|
||||||
tpf*)
|
tpf*)
|
||||||
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
|
# TPF is a cross-target only. Preferred cross-host = GNU/Linux.
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
need_version=no
|
need_version=no
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
@@ -14876,7 +14986,7 @@ tpf*)
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
uts4*)
|
uts4*)
|
||||||
version_type=linux
|
version_type=linux # correct to gnu/linux during the next big refactor
|
||||||
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
|
||||||
soname_spec='${libname}${release}${shared_ext}$major'
|
soname_spec='${libname}${release}${shared_ext}$major'
|
||||||
shlibpath_var=LD_LIBRARY_PATH
|
shlibpath_var=LD_LIBRARY_PATH
|
||||||
@@ -16212,8 +16322,6 @@ for ac_func in \
|
|||||||
strtol \
|
strtol \
|
||||||
sizeof \
|
sizeof \
|
||||||
tcgetattr \
|
tcgetattr \
|
||||||
be32toh \
|
|
||||||
htobe32 \
|
|
||||||
umask \
|
umask \
|
||||||
towlower \
|
towlower \
|
||||||
getopt_long \
|
getopt_long \
|
||||||
@@ -16231,6 +16339,107 @@ fi
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for be32toh" >&5
|
||||||
|
$as_echo_n "checking for be32toh... " >&6; }
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
#include "libpcp/pcp/config.h"
|
||||||
|
#ifdef HAVE_ENDIAN_H
|
||||||
|
#include <endian.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_ENDIAN_H
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
(void)be32toh(0);
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_link "$LINENO"; then :
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
else
|
||||||
|
|
||||||
|
|
||||||
|
$as_echo "#define HAVE_BE32TOH /**/" >>confdefs.h
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for htobe32" >&5
|
||||||
|
$as_echo_n "checking for htobe32... " >&6; }
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
#include "libpcp/pcp/config.h"
|
||||||
|
#ifdef HAVE_ENDIAN_H
|
||||||
|
#include <endian.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_ENDIAN_H
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
(void)htobe32(0);
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_link "$LINENO"; then :
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||||
|
$as_echo "no" >&6; }
|
||||||
|
else
|
||||||
|
|
||||||
|
|
||||||
|
$as_echo "#define HAVE_HTOBE32 /**/" >>confdefs.h
|
||||||
|
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||||
|
$as_echo "yes" >&6; }
|
||||||
|
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
|
||||||
|
# scrypt checks
|
||||||
|
ac_fn_c_check_decl "$LINENO" "be64enc" "ac_cv_have_decl_be64enc" "#include <sys/endian.h>
|
||||||
|
"
|
||||||
|
if test "x$ac_cv_have_decl_be64enc" = xyes; then :
|
||||||
|
ac_have_decl=1
|
||||||
|
else
|
||||||
|
ac_have_decl=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_DECL_BE64ENC $ac_have_decl
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
for ac_func in posix_memalign
|
||||||
|
do :
|
||||||
|
ac_fn_c_check_func "$LINENO" "posix_memalign" "ac_cv_func_posix_memalign"
|
||||||
|
if test "x$ac_cv_func_posix_memalign" = xyes; then :
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_POSIX_MEMALIGN 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler and flags for sanity" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler and flags for sanity" >&5
|
||||||
$as_echo_n "checking compiler and flags for sanity... " >&6; }
|
$as_echo_n "checking compiler and flags for sanity... " >&6; }
|
||||||
if test "$cross_compiling" = yes; then :
|
if test "$cross_compiling" = yes; then :
|
||||||
@@ -17260,6 +17469,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
|
|||||||
enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
|
enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
|
||||||
SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
|
SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
|
||||||
ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
|
ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
|
||||||
|
PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
|
||||||
host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
|
host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
|
||||||
host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
|
host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
|
||||||
host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
|
host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
|
||||||
@@ -17342,7 +17552,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
|
|||||||
allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
|
allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
|
||||||
no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
|
no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
|
hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
|
|
||||||
hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
|
hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
|
hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
|
hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
|
||||||
@@ -17414,7 +17623,6 @@ with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
|
|||||||
allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
|
allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
|
||||||
no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
|
no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
|
hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
|
|
||||||
hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
|
hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
|
hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
|
||||||
hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
|
hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
|
||||||
@@ -17453,6 +17661,7 @@ _LTECHO_EOF'
|
|||||||
# Quote evaled strings.
|
# Quote evaled strings.
|
||||||
for var in SHELL \
|
for var in SHELL \
|
||||||
ECHO \
|
ECHO \
|
||||||
|
PATH_SEPARATOR \
|
||||||
SED \
|
SED \
|
||||||
GREP \
|
GREP \
|
||||||
EGREP \
|
EGREP \
|
||||||
@@ -17503,7 +17712,6 @@ with_gnu_ld \
|
|||||||
allow_undefined_flag \
|
allow_undefined_flag \
|
||||||
no_undefined_flag \
|
no_undefined_flag \
|
||||||
hardcode_libdir_flag_spec \
|
hardcode_libdir_flag_spec \
|
||||||
hardcode_libdir_flag_spec_ld \
|
|
||||||
hardcode_libdir_separator \
|
hardcode_libdir_separator \
|
||||||
exclude_expsyms \
|
exclude_expsyms \
|
||||||
include_expsyms \
|
include_expsyms \
|
||||||
@@ -17537,7 +17745,6 @@ with_gnu_ld_CXX \
|
|||||||
allow_undefined_flag_CXX \
|
allow_undefined_flag_CXX \
|
||||||
no_undefined_flag_CXX \
|
no_undefined_flag_CXX \
|
||||||
hardcode_libdir_flag_spec_CXX \
|
hardcode_libdir_flag_spec_CXX \
|
||||||
hardcode_libdir_flag_spec_ld_CXX \
|
|
||||||
hardcode_libdir_separator_CXX \
|
hardcode_libdir_separator_CXX \
|
||||||
exclude_expsyms_CXX \
|
exclude_expsyms_CXX \
|
||||||
include_expsyms_CXX \
|
include_expsyms_CXX \
|
||||||
@@ -18349,8 +18556,8 @@ $as_echo X"$file" |
|
|||||||
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
||||||
#
|
#
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||||
# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
|
# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
# Inc.
|
# Foundation, Inc.
|
||||||
# Written by Gordon Matzigkeit, 1996
|
# Written by Gordon Matzigkeit, 1996
|
||||||
#
|
#
|
||||||
# This file is part of GNU Libtool.
|
# This file is part of GNU Libtool.
|
||||||
@@ -18404,6 +18611,9 @@ SHELL=$lt_SHELL
|
|||||||
# An echo program that protects backslashes.
|
# An echo program that protects backslashes.
|
||||||
ECHO=$lt_ECHO
|
ECHO=$lt_ECHO
|
||||||
|
|
||||||
|
# The PATH separator for the build system.
|
||||||
|
PATH_SEPARATOR=$lt_PATH_SEPARATOR
|
||||||
|
|
||||||
# The host system.
|
# The host system.
|
||||||
host_alias=$host_alias
|
host_alias=$host_alias
|
||||||
host=$host
|
host=$host
|
||||||
@@ -18705,10 +18915,6 @@ no_undefined_flag=$lt_no_undefined_flag
|
|||||||
# This must work even if \$libdir does not exist
|
# This must work even if \$libdir does not exist
|
||||||
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
|
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
|
||||||
|
|
||||||
# If ld is used when linking, flag to hardcode \$libdir into a binary
|
|
||||||
# during linking. This must work even if \$libdir does not exist.
|
|
||||||
hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
|
|
||||||
|
|
||||||
# Whether we need a single "-rpath" flag with a separated argument.
|
# Whether we need a single "-rpath" flag with a separated argument.
|
||||||
hardcode_libdir_separator=$lt_hardcode_libdir_separator
|
hardcode_libdir_separator=$lt_hardcode_libdir_separator
|
||||||
|
|
||||||
@@ -19051,10 +19257,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
|
|||||||
# This must work even if \$libdir does not exist
|
# This must work even if \$libdir does not exist
|
||||||
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
|
hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
|
||||||
|
|
||||||
# If ld is used when linking, flag to hardcode \$libdir into a binary
|
|
||||||
# during linking. This must work even if \$libdir does not exist.
|
|
||||||
hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
|
|
||||||
|
|
||||||
# Whether we need a single "-rpath" flag with a separated argument.
|
# Whether we need a single "-rpath" flag with a separated argument.
|
||||||
hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
|
hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
|
||||||
|
|
||||||
|
|||||||
38
configure.ac
38
configure.ac
@@ -79,14 +79,48 @@ AC_CHECK_FUNCS( \
|
|||||||
strtol \
|
strtol \
|
||||||
sizeof \
|
sizeof \
|
||||||
tcgetattr \
|
tcgetattr \
|
||||||
be32toh \
|
|
||||||
htobe32 \
|
|
||||||
umask \
|
umask \
|
||||||
towlower \
|
towlower \
|
||||||
getopt_long \
|
getopt_long \
|
||||||
vasprintf
|
vasprintf
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for be32toh])
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include "libpcp/pcp/config.h"
|
||||||
|
#ifdef HAVE_ENDIAN_H
|
||||||
|
#include <endian.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_ENDIAN_H
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#endif
|
||||||
|
], [
|
||||||
|
(void)be32toh(0);
|
||||||
|
], [AC_MSG_RESULT([no])], [
|
||||||
|
AC_DEFINE(HAVE_BE32TOH,, Define if be32toh() is available)
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for htobe32])
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include "libpcp/pcp/config.h"
|
||||||
|
#ifdef HAVE_ENDIAN_H
|
||||||
|
#include <endian.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_ENDIAN_H
|
||||||
|
#include <sys/endian.h>
|
||||||
|
#endif
|
||||||
|
], [
|
||||||
|
(void)htobe32(0);
|
||||||
|
], [AC_MSG_RESULT([no])], [
|
||||||
|
AC_DEFINE(HAVE_HTOBE32,, Define if htobe32() is available)
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
])
|
||||||
|
|
||||||
|
# scrypt checks
|
||||||
|
AC_CHECK_DECLS([be64enc], [], [], [[#include <sys/endian.h>]])
|
||||||
|
AC_CHECK_FUNCS(posix_memalign)
|
||||||
|
|
||||||
AC_MSG_CHECKING([compiler and flags for sanity])
|
AC_MSG_CHECKING([compiler and flags for sanity])
|
||||||
AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]], [[ exit(0); ]])],
|
AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]], [[ exit(0); ]])],
|
||||||
[ AC_MSG_RESULT([yes]) ],
|
[ AC_MSG_RESULT([yes]) ],
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ extern "C" {
|
|||||||
#include "pcp/pad.h"
|
#include "pcp/pad.h"
|
||||||
#include "pcp/platform.h"
|
#include "pcp/platform.h"
|
||||||
#include "pcp/randomart.h"
|
#include "pcp/randomart.h"
|
||||||
|
#include "pcp/scrypt.h"
|
||||||
#include "pcp/uthash.h"
|
#include "pcp/uthash.h"
|
||||||
#include "pcp/vault.h"
|
#include "pcp/vault.h"
|
||||||
#include "pcp/version.h"
|
#include "pcp/version.h"
|
||||||
|
|||||||
@@ -6,9 +6,13 @@
|
|||||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||||
#undef HAVE_ARPA_INET_H
|
#undef HAVE_ARPA_INET_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `be32toh' function. */
|
/* Define if be32toh() is available */
|
||||||
#undef HAVE_BE32TOH
|
#undef HAVE_BE32TOH
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `be64enc', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_BE64ENC
|
||||||
|
|
||||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||||
#undef HAVE_DLFCN_H
|
#undef HAVE_DLFCN_H
|
||||||
|
|
||||||
@@ -48,7 +52,7 @@
|
|||||||
/* Define to 1 if you have the `getopt_long' function. */
|
/* Define to 1 if you have the `getopt_long' function. */
|
||||||
#undef HAVE_GETOPT_LONG
|
#undef HAVE_GETOPT_LONG
|
||||||
|
|
||||||
/* Define to 1 if you have the `htobe32' function. */
|
/* Define if htobe32() is available */
|
||||||
#undef HAVE_HTOBE32
|
#undef HAVE_HTOBE32
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
@@ -81,6 +85,9 @@
|
|||||||
/* Define to 1 if you have the `perror' function. */
|
/* Define to 1 if you have the `perror' function. */
|
||||||
#undef HAVE_PERROR
|
#undef HAVE_PERROR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `posix_memalign' function. */
|
||||||
|
#undef HAVE_POSIX_MEMALIGN
|
||||||
|
|
||||||
/* Define to 1 if you have the `sizeof' function. */
|
/* Define to 1 if you have the `sizeof' function. */
|
||||||
#undef HAVE_SIZEOF
|
#undef HAVE_SIZEOF
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "z85.h"
|
#include "z85.h"
|
||||||
#include "uthash.h"
|
#include "uthash.h"
|
||||||
#include "jenhash.h"
|
#include "jenhash.h"
|
||||||
|
#include "scrypt.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PCP private key structure. Most fields are self explanatory.
|
PCP private key structure. Most fields are self explanatory.
|
||||||
@@ -138,20 +139,8 @@ unsigned char * pcp_gennonce();
|
|||||||
|
|
||||||
void pcpedit_key(char *keyid);
|
void pcpedit_key(char *keyid);
|
||||||
|
|
||||||
// proprietary key derivation function. derives an
|
// use scrypt() to create a key from a passphrase and a nonce
|
||||||
// secure encryption key from the given passphrase by
|
unsigned char *pcp_derivekey(char *passphrase, unsigned char *nonce);
|
||||||
// calculating a SALSA20 hash from it HCYCLES times.
|
|
||||||
//
|
|
||||||
// turns the result into a proper CURVE25519 secret
|
|
||||||
// key. allocates memory for key and it is up to the
|
|
||||||
// user to free it after use.
|
|
||||||
//
|
|
||||||
// deprecation warning: maybe removed once the libsodium
|
|
||||||
// developers incorporated some key derivation function
|
|
||||||
// into libsodium. so far, there's none but word goes
|
|
||||||
// that perhaps something like scrypt() from the star
|
|
||||||
// distribution may be added in the future.
|
|
||||||
unsigned char *pcp_derivekey(char *passphrase);
|
|
||||||
|
|
||||||
pcp_key_t *pcp_derive_pcpkey (pcp_key_t *ours, char *theirs);
|
pcp_key_t *pcp_derive_pcpkey (pcp_key_t *ours, char *theirs);
|
||||||
|
|
||||||
|
|||||||
42
include/pcp/scrypt.h
Normal file
42
include/pcp/scrypt.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
This file is part of Pretty Curved Privacy (pcp1).
|
||||||
|
|
||||||
|
Copyright (C) 2013 T.Linden.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _HAVE_PCP_SCRYPT_H
|
||||||
|
#define _HAVE_PCP_SCRYPT_H
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <sodium.h>
|
||||||
|
|
||||||
|
#include "crypto_scrypt.h"
|
||||||
|
#include "mem.h"
|
||||||
|
#include "defines.h"
|
||||||
|
|
||||||
|
unsigned char * pcp_scrypt(char *passwd, size_t passwdlen, unsigned char *nonce);
|
||||||
|
|
||||||
|
#endif // _HAVE_PCP_SCRYPT_H
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
#
|
#
|
||||||
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
#
|
#
|
||||||
AM_CFLAGS = -I../include/pcp -Wall -g
|
AM_CFLAGS = -I../include/pcp -Iscrypt/crypto -Iscrypt/util -Wall -g
|
||||||
|
|
||||||
lib_LTLIBRARIES = libpcp1.la
|
lib_LTLIBRARIES = libpcp1.la
|
||||||
|
|
||||||
@@ -28,6 +28,7 @@ pkgconfig_DATA = libpcp1.pc
|
|||||||
libpcp1_la_SOURCES = mac.c mem.c pad.c version.c \
|
libpcp1_la_SOURCES = mac.c mem.c pad.c version.c \
|
||||||
z85.c zmq_z85.c key.c randomart.c \
|
z85.c zmq_z85.c key.c randomart.c \
|
||||||
vault.c fatal.c jenhash.c digital_crc32.c \
|
vault.c fatal.c jenhash.c digital_crc32.c \
|
||||||
crypto.c ed.c keyhash.c
|
crypto.c ed.c keyhash.c scrypt.c \
|
||||||
|
scrypt/crypto/sha256.c scrypt/crypto/crypto_scrypt-nosse.c
|
||||||
|
|
||||||
include_HEADERS = ../include/pcp.h
|
include_HEADERS = ../include/pcp.h
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
@@ -101,7 +101,8 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
|
|||||||
libpcp1_la_LIBADD =
|
libpcp1_la_LIBADD =
|
||||||
am_libpcp1_la_OBJECTS = mac.lo mem.lo pad.lo version.lo z85.lo \
|
am_libpcp1_la_OBJECTS = mac.lo mem.lo pad.lo version.lo z85.lo \
|
||||||
zmq_z85.lo key.lo randomart.lo vault.lo fatal.lo jenhash.lo \
|
zmq_z85.lo key.lo randomart.lo vault.lo fatal.lo jenhash.lo \
|
||||||
digital_crc32.lo crypto.lo ed.lo keyhash.lo
|
digital_crc32.lo crypto.lo ed.lo keyhash.lo scrypt.lo \
|
||||||
|
sha256.lo crypto_scrypt-nosse.lo
|
||||||
libpcp1_la_OBJECTS = $(am_libpcp1_la_OBJECTS)
|
libpcp1_la_OBJECTS = $(am_libpcp1_la_OBJECTS)
|
||||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/pcp
|
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/pcp
|
||||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
||||||
@@ -267,14 +268,15 @@ top_srcdir = @top_srcdir@
|
|||||||
#
|
#
|
||||||
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
#
|
#
|
||||||
AM_CFLAGS = -I../include/pcp -Wall -g
|
AM_CFLAGS = -I../include/pcp -Iscrypt/crypto -Iscrypt/util -Wall -g
|
||||||
lib_LTLIBRARIES = libpcp1.la
|
lib_LTLIBRARIES = libpcp1.la
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = libpcp1.pc
|
pkgconfig_DATA = libpcp1.pc
|
||||||
libpcp1_la_SOURCES = mac.c mem.c pad.c version.c \
|
libpcp1_la_SOURCES = mac.c mem.c pad.c version.c \
|
||||||
z85.c zmq_z85.c key.c randomart.c \
|
z85.c zmq_z85.c key.c randomart.c \
|
||||||
vault.c fatal.c jenhash.c digital_crc32.c \
|
vault.c fatal.c jenhash.c digital_crc32.c \
|
||||||
crypto.c ed.c keyhash.c
|
crypto.c ed.c keyhash.c scrypt.c \
|
||||||
|
scrypt/crypto/sha256.c scrypt/crypto/crypto_scrypt-nosse.c
|
||||||
|
|
||||||
include_HEADERS = ../include/pcp.h
|
include_HEADERS = ../include/pcp.h
|
||||||
all: all-am
|
all: all-am
|
||||||
@@ -357,6 +359,7 @@ distclean-compile:
|
|||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypto.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypto.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crypto_scrypt-nosse.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/digital_crc32.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/digital_crc32.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ed.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fatal.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fatal.Plo@am__quote@
|
||||||
@@ -367,6 +370,8 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pad.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pad.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randomart.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randomart.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scrypt.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vault.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vault.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/z85.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/z85.Plo@am__quote@
|
||||||
@@ -393,6 +398,20 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
sha256.lo: scrypt/crypto/sha256.c
|
||||||
|
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256.lo -MD -MP -MF $(DEPDIR)/sha256.Tpo -c -o sha256.lo `test -f 'scrypt/crypto/sha256.c' || echo '$(srcdir)/'`scrypt/crypto/sha256.c
|
||||||
|
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scrypt/crypto/sha256.c' object='sha256.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256.lo `test -f 'scrypt/crypto/sha256.c' || echo '$(srcdir)/'`scrypt/crypto/sha256.c
|
||||||
|
|
||||||
|
crypto_scrypt-nosse.lo: scrypt/crypto/crypto_scrypt-nosse.c
|
||||||
|
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crypto_scrypt-nosse.lo -MD -MP -MF $(DEPDIR)/crypto_scrypt-nosse.Tpo -c -o crypto_scrypt-nosse.lo `test -f 'scrypt/crypto/crypto_scrypt-nosse.c' || echo '$(srcdir)/'`scrypt/crypto/crypto_scrypt-nosse.c
|
||||||
|
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/crypto_scrypt-nosse.Tpo $(DEPDIR)/crypto_scrypt-nosse.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scrypt/crypto/crypto_scrypt-nosse.c' object='crypto_scrypt-nosse.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crypto_scrypt-nosse.lo `test -f 'scrypt/crypto/crypto_scrypt-nosse.c' || echo '$(srcdir)/'`scrypt/crypto/crypto_scrypt-nosse.c
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
|
|||||||
33
libpcp/key.c
33
libpcp/key.c
@@ -23,6 +23,33 @@
|
|||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "keyhash.h"
|
#include "keyhash.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AS of 16/01/2014 I'm using scrypt() instead of my crafted key
|
||||||
|
* derivation function. However, I create a hash from the pcp_script()
|
||||||
|
* result anyway because I need a cure25519 secret.
|
||||||
|
*/
|
||||||
|
unsigned char *pcp_derivekey(char *passphrase, unsigned char *nonce) {
|
||||||
|
unsigned char *key = ucmalloc(crypto_secretbox_KEYBYTES);
|
||||||
|
size_t plen = strnlen(passphrase, 255);
|
||||||
|
|
||||||
|
// create the scrypt hash
|
||||||
|
unsigned char *scrypted = pcp_scrypt(passphrase, plen, nonce);
|
||||||
|
|
||||||
|
// make a hash from the scrypt() result
|
||||||
|
crypto_hash_sha256(key, (unsigned char*)scrypted, 64);
|
||||||
|
|
||||||
|
// turn the 32byte hash into a secret key
|
||||||
|
key[0] &= 248;
|
||||||
|
key[31] &= 127;
|
||||||
|
key[31] |= 64;
|
||||||
|
|
||||||
|
memset(passphrase, 0, plen);
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* deprecated
|
||||||
unsigned char *pcp_derivekey(char *passphrase) {
|
unsigned char *pcp_derivekey(char *passphrase) {
|
||||||
unsigned char *hash32 = ucmalloc(crypto_hash_sha256_BYTES);
|
unsigned char *hash32 = ucmalloc(crypto_hash_sha256_BYTES);
|
||||||
unsigned char *key = ucmalloc(crypto_secretbox_KEYBYTES);
|
unsigned char *key = ucmalloc(crypto_secretbox_KEYBYTES);
|
||||||
@@ -55,7 +82,7 @@ unsigned char *pcp_derivekey(char *passphrase) {
|
|||||||
|
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
char *pcp_getkeyid(pcp_key_t *k) {
|
char *pcp_getkeyid(pcp_key_t *k) {
|
||||||
uint32_t s, p;
|
uint32_t s, p;
|
||||||
@@ -135,7 +162,7 @@ pcp_key_t *pcpkey_encrypt(pcp_key_t *key, char *passphrase) {
|
|||||||
memcpy (key->nonce, nonce, crypto_secretbox_NONCEBYTES);
|
memcpy (key->nonce, nonce, crypto_secretbox_NONCEBYTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *encryptkey = pcp_derivekey(passphrase);
|
unsigned char *encryptkey = pcp_derivekey(passphrase, key->nonce);
|
||||||
|
|
||||||
unsigned char *encrypted;
|
unsigned char *encrypted;
|
||||||
size_t es;
|
size_t es;
|
||||||
@@ -163,7 +190,7 @@ pcp_key_t *pcpkey_encrypt(pcp_key_t *key, char *passphrase) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pcp_key_t *pcpkey_decrypt(pcp_key_t *key, char *passphrase) {
|
pcp_key_t *pcpkey_decrypt(pcp_key_t *key, char *passphrase) {
|
||||||
unsigned char *encryptkey = pcp_derivekey(passphrase);
|
unsigned char *encryptkey = pcp_derivekey(passphrase, key->nonce);
|
||||||
|
|
||||||
unsigned char *decrypted;
|
unsigned char *decrypted;
|
||||||
size_t es;
|
size_t es;
|
||||||
|
|||||||
42
libpcp/scrypt.c
Normal file
42
libpcp/scrypt.c
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
This file is part of Pretty Curved Privacy (pcp1).
|
||||||
|
|
||||||
|
Copyright (C) 2013 T.Linden.
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "scrypt.h"
|
||||||
|
|
||||||
|
unsigned char* pcp_scrypt(char *passwd, size_t passwdlen, unsigned char *nonce) {
|
||||||
|
uint8_t *dk = ucmalloc(64); // resulting hash
|
||||||
|
|
||||||
|
// constants
|
||||||
|
uint64_t N = 1 << 14;
|
||||||
|
uint32_t r = 8;
|
||||||
|
uint32_t p = 1;
|
||||||
|
size_t buflen = 64;
|
||||||
|
|
||||||
|
if (crypto_scrypt(passwd, passwdlen, (uint8_t *)nonce, crypto_secretbox_NONCEBYTES, N, r, p, dk, buflen) == 0) {
|
||||||
|
return dk;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fatal("crypto_scrypt() failed");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
6
libpcp/scrypt/README
Normal file
6
libpcp/scrypt/README
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
The source code under this directory is taken from the client for the
|
||||||
|
Tarsnap online backup system (and released under the 2-clause BSD license
|
||||||
|
with permission of the author); keeping this code in sync with the Tarsnap
|
||||||
|
code is highly desirable and explains why there is some functionality
|
||||||
|
included here which is not actually used by the scrypt file encryption
|
||||||
|
utility.
|
||||||
124
libpcp/scrypt/crypto/crypto_aesctr.c
Normal file
124
libpcp/scrypt/crypto/crypto_aesctr.c
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
/*-
|
||||||
|
* 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 <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <openssl/aes.h>
|
||||||
|
|
||||||
|
#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);
|
||||||
|
}
|
||||||
59
libpcp/scrypt/crypto/crypto_aesctr.h
Normal file
59
libpcp/scrypt/crypto/crypto_aesctr.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/*-
|
||||||
|
* 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 <stdint.h>
|
||||||
|
|
||||||
|
#include <openssl/aes.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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_ */
|
||||||
338
libpcp/scrypt/crypto/crypto_scrypt-nosse.c
Normal file
338
libpcp/scrypt/crypto/crypto_scrypt-nosse.c
Normal file
@@ -0,0 +1,338 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "sha256.h"
|
||||||
|
#include "sysendian.h"
|
||||||
|
|
||||||
|
#include "crypto_scrypt.h"
|
||||||
|
|
||||||
|
static void blkcpy(void *, void *, size_t);
|
||||||
|
static void blkxor(void *, void *, size_t);
|
||||||
|
static void salsa20_8(uint32_t[16]);
|
||||||
|
static void blockmix_salsa8(uint32_t *, uint32_t *, uint32_t *, size_t);
|
||||||
|
static uint64_t integerify(void *, size_t);
|
||||||
|
static void smix(uint8_t *, size_t, uint64_t, uint32_t *, uint32_t *);
|
||||||
|
|
||||||
|
static void
|
||||||
|
blkcpy(void * dest, void * src, size_t len)
|
||||||
|
{
|
||||||
|
size_t * D = dest;
|
||||||
|
size_t * S = src;
|
||||||
|
size_t L = len / sizeof(size_t);
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < L; i++)
|
||||||
|
D[i] = S[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
blkxor(void * dest, void * src, size_t len)
|
||||||
|
{
|
||||||
|
size_t * D = dest;
|
||||||
|
size_t * S = src;
|
||||||
|
size_t L = len / sizeof(size_t);
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < L; i++)
|
||||||
|
D[i] ^= S[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* salsa20_8(B):
|
||||||
|
* Apply the salsa20/8 core to the provided block.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
salsa20_8(uint32_t B[16])
|
||||||
|
{
|
||||||
|
uint32_t x[16];
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
blkcpy(x, B, 64);
|
||||||
|
for (i = 0; i < 8; i += 2) {
|
||||||
|
#define R(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
|
||||||
|
/* Operate on columns. */
|
||||||
|
x[ 4] ^= R(x[ 0]+x[12], 7); x[ 8] ^= R(x[ 4]+x[ 0], 9);
|
||||||
|
x[12] ^= R(x[ 8]+x[ 4],13); x[ 0] ^= R(x[12]+x[ 8],18);
|
||||||
|
|
||||||
|
x[ 9] ^= R(x[ 5]+x[ 1], 7); x[13] ^= R(x[ 9]+x[ 5], 9);
|
||||||
|
x[ 1] ^= R(x[13]+x[ 9],13); x[ 5] ^= R(x[ 1]+x[13],18);
|
||||||
|
|
||||||
|
x[14] ^= R(x[10]+x[ 6], 7); x[ 2] ^= R(x[14]+x[10], 9);
|
||||||
|
x[ 6] ^= R(x[ 2]+x[14],13); x[10] ^= R(x[ 6]+x[ 2],18);
|
||||||
|
|
||||||
|
x[ 3] ^= R(x[15]+x[11], 7); x[ 7] ^= R(x[ 3]+x[15], 9);
|
||||||
|
x[11] ^= R(x[ 7]+x[ 3],13); x[15] ^= R(x[11]+x[ 7],18);
|
||||||
|
|
||||||
|
/* Operate on rows. */
|
||||||
|
x[ 1] ^= R(x[ 0]+x[ 3], 7); x[ 2] ^= R(x[ 1]+x[ 0], 9);
|
||||||
|
x[ 3] ^= R(x[ 2]+x[ 1],13); x[ 0] ^= R(x[ 3]+x[ 2],18);
|
||||||
|
|
||||||
|
x[ 6] ^= R(x[ 5]+x[ 4], 7); x[ 7] ^= R(x[ 6]+x[ 5], 9);
|
||||||
|
x[ 4] ^= R(x[ 7]+x[ 6],13); x[ 5] ^= R(x[ 4]+x[ 7],18);
|
||||||
|
|
||||||
|
x[11] ^= R(x[10]+x[ 9], 7); x[ 8] ^= R(x[11]+x[10], 9);
|
||||||
|
x[ 9] ^= R(x[ 8]+x[11],13); x[10] ^= R(x[ 9]+x[ 8],18);
|
||||||
|
|
||||||
|
x[12] ^= R(x[15]+x[14], 7); x[13] ^= R(x[12]+x[15], 9);
|
||||||
|
x[14] ^= R(x[13]+x[12],13); x[15] ^= R(x[14]+x[13],18);
|
||||||
|
#undef R
|
||||||
|
}
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
B[i] += x[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blockmix_salsa8(Bin, Bout, X, r):
|
||||||
|
* Compute Bout = BlockMix_{salsa20/8, r}(Bin). The input Bin must be 128r
|
||||||
|
* bytes in length; the output Bout must also be the same size. The
|
||||||
|
* temporary space X must be 64 bytes.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
blockmix_salsa8(uint32_t * Bin, uint32_t * Bout, uint32_t * X, size_t r)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
/* 1: X <-- B_{2r - 1} */
|
||||||
|
blkcpy(X, &Bin[(2 * r - 1) * 16], 64);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to 2r - 1 do */
|
||||||
|
for (i = 0; i < 2 * r; i += 2) {
|
||||||
|
/* 3: X <-- H(X \xor B_i) */
|
||||||
|
blkxor(X, &Bin[i * 16], 64);
|
||||||
|
salsa20_8(X);
|
||||||
|
|
||||||
|
/* 4: Y_i <-- X */
|
||||||
|
/* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
|
||||||
|
blkcpy(&Bout[i * 8], X, 64);
|
||||||
|
|
||||||
|
/* 3: X <-- H(X \xor B_i) */
|
||||||
|
blkxor(X, &Bin[i * 16 + 16], 64);
|
||||||
|
salsa20_8(X);
|
||||||
|
|
||||||
|
/* 4: Y_i <-- X */
|
||||||
|
/* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
|
||||||
|
blkcpy(&Bout[i * 8 + r * 16], X, 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* integerify(B, r):
|
||||||
|
* Return the result of parsing B_{2r-1} as a little-endian integer.
|
||||||
|
*/
|
||||||
|
static uint64_t
|
||||||
|
integerify(void * B, size_t r)
|
||||||
|
{
|
||||||
|
uint32_t * X = (void *)((uintptr_t)(B) + (2 * r - 1) * 64);
|
||||||
|
|
||||||
|
return (((uint64_t)(X[1]) << 32) + X[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* smix(B, r, N, V, XY):
|
||||||
|
* Compute B = SMix_r(B, N). The input B must be 128r bytes in length;
|
||||||
|
* the temporary storage V must be 128rN bytes in length; the temporary
|
||||||
|
* storage XY must be 256r + 64 bytes in length. The value N must be a
|
||||||
|
* power of 2 greater than 1. The arrays B, V, and XY must be aligned to a
|
||||||
|
* multiple of 64 bytes.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
smix(uint8_t * B, size_t r, uint64_t N, uint32_t * V, uint32_t * XY)
|
||||||
|
{
|
||||||
|
uint32_t * X = XY;
|
||||||
|
uint32_t * Y = &XY[32 * r];
|
||||||
|
uint32_t * Z = &XY[64 * r];
|
||||||
|
uint64_t i;
|
||||||
|
uint64_t j;
|
||||||
|
size_t k;
|
||||||
|
|
||||||
|
/* 1: X <-- B */
|
||||||
|
for (k = 0; k < 32 * r; k++)
|
||||||
|
X[k] = le32dec(&B[4 * k]);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to N - 1 do */
|
||||||
|
for (i = 0; i < N; i += 2) {
|
||||||
|
/* 3: V_i <-- X */
|
||||||
|
blkcpy(&V[i * (32 * r)], X, 128 * r);
|
||||||
|
|
||||||
|
/* 4: X <-- H(X) */
|
||||||
|
blockmix_salsa8(X, Y, Z, r);
|
||||||
|
|
||||||
|
/* 3: V_i <-- X */
|
||||||
|
blkcpy(&V[(i + 1) * (32 * r)], Y, 128 * r);
|
||||||
|
|
||||||
|
/* 4: X <-- H(X) */
|
||||||
|
blockmix_salsa8(Y, X, Z, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 6: for i = 0 to N - 1 do */
|
||||||
|
for (i = 0; i < N; i += 2) {
|
||||||
|
/* 7: j <-- Integerify(X) mod N */
|
||||||
|
j = integerify(X, r) & (N - 1);
|
||||||
|
|
||||||
|
/* 8: X <-- H(X \xor V_j) */
|
||||||
|
blkxor(X, &V[j * (32 * r)], 128 * r);
|
||||||
|
blockmix_salsa8(X, Y, Z, r);
|
||||||
|
|
||||||
|
/* 7: j <-- Integerify(X) mod N */
|
||||||
|
j = integerify(Y, r) & (N - 1);
|
||||||
|
|
||||||
|
/* 8: X <-- H(X \xor V_j) */
|
||||||
|
blkxor(Y, &V[j * (32 * r)], 128 * r);
|
||||||
|
blockmix_salsa8(Y, X, Z, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 10: B' <-- X */
|
||||||
|
for (k = 0; k < 32 * r; k++)
|
||||||
|
le32enc(&B[4 * k], X[k]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
|
||||||
|
* Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
|
||||||
|
* p, buflen) and write the result into buf. The parameters r, p, and buflen
|
||||||
|
* must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
|
||||||
|
* must be a power of 2 greater than 1.
|
||||||
|
*
|
||||||
|
* Return 0 on success; or -1 on error.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
|
||||||
|
const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
|
||||||
|
uint8_t * buf, size_t buflen)
|
||||||
|
{
|
||||||
|
void * B0, * V0, * XY0;
|
||||||
|
uint8_t * B;
|
||||||
|
uint32_t * V;
|
||||||
|
uint32_t * XY;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
/* Sanity-check parameters. */
|
||||||
|
#if SIZE_MAX > UINT32_MAX
|
||||||
|
if (buflen > (((uint64_t)(1) << 32) - 1) * 32) {
|
||||||
|
errno = EFBIG;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if ((uint64_t)(r) * (uint64_t)(p) >= (1 << 30)) {
|
||||||
|
errno = EFBIG;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
if (((N & (N - 1)) != 0) || (N == 0)) {
|
||||||
|
errno = EINVAL;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
if ((r > SIZE_MAX / 128 / p) ||
|
||||||
|
#if SIZE_MAX / 256 <= UINT32_MAX
|
||||||
|
(r > SIZE_MAX / 256) ||
|
||||||
|
#endif
|
||||||
|
(N > SIZE_MAX / 128 / r)) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate memory. */
|
||||||
|
#ifdef HAVE_POSIX_MEMALIGN
|
||||||
|
if ((errno = posix_memalign(&B0, 64, 128 * r * p)) != 0)
|
||||||
|
goto err0;
|
||||||
|
B = (uint8_t *)(B0);
|
||||||
|
if ((errno = posix_memalign(&XY0, 64, 256 * r + 64)) != 0)
|
||||||
|
goto err1;
|
||||||
|
XY = (uint32_t *)(XY0);
|
||||||
|
#ifndef MAP_ANON
|
||||||
|
if ((errno = posix_memalign(&V0, 64, 128 * r * N)) != 0)
|
||||||
|
goto err2;
|
||||||
|
V = (uint32_t *)(V0);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
if ((B0 = malloc(128 * r * p + 63)) == NULL)
|
||||||
|
goto err0;
|
||||||
|
B = (uint8_t *)(((uintptr_t)(B0) + 63) & ~ (uintptr_t)(63));
|
||||||
|
if ((XY0 = malloc(256 * r + 64 + 63)) == NULL)
|
||||||
|
goto err1;
|
||||||
|
XY = (uint32_t *)(((uintptr_t)(XY0) + 63) & ~ (uintptr_t)(63));
|
||||||
|
#ifndef MAP_ANON
|
||||||
|
if ((V0 = malloc(128 * r * N + 63)) == NULL)
|
||||||
|
goto err2;
|
||||||
|
V = (uint32_t *)(((uintptr_t)(V0) + 63) & ~ (uintptr_t)(63));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef MAP_ANON
|
||||||
|
if ((V0 = mmap(NULL, 128 * r * N, PROT_READ | PROT_WRITE,
|
||||||
|
#ifdef MAP_NOCORE
|
||||||
|
MAP_ANON | MAP_PRIVATE | MAP_NOCORE,
|
||||||
|
#else
|
||||||
|
MAP_ANON | MAP_PRIVATE,
|
||||||
|
#endif
|
||||||
|
-1, 0)) == MAP_FAILED)
|
||||||
|
goto err2;
|
||||||
|
V = (uint32_t *)(V0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
|
||||||
|
PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to p - 1 do */
|
||||||
|
for (i = 0; i < p; i++) {
|
||||||
|
/* 3: B_i <-- MF(B_i, N) */
|
||||||
|
smix(&B[i * 128 * r], r, N, V, XY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
|
||||||
|
PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
|
||||||
|
|
||||||
|
/* Free memory. */
|
||||||
|
#ifdef MAP_ANON
|
||||||
|
if (munmap(V0, 128 * r * N))
|
||||||
|
goto err2;
|
||||||
|
#else
|
||||||
|
free(V0);
|
||||||
|
#endif
|
||||||
|
free(XY0);
|
||||||
|
free(B0);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
err2:
|
||||||
|
free(XY0);
|
||||||
|
err1:
|
||||||
|
free(B0);
|
||||||
|
err0:
|
||||||
|
/* Failure! */
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
BIN
libpcp/scrypt/crypto/crypto_scrypt-nosse.o
Normal file
BIN
libpcp/scrypt/crypto/crypto_scrypt-nosse.o
Normal file
Binary file not shown.
284
libpcp/scrypt/crypto/crypto_scrypt-ref.c
Normal file
284
libpcp/scrypt/crypto/crypto_scrypt-ref.c
Normal file
@@ -0,0 +1,284 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "sha256.h"
|
||||||
|
#include "sysendian.h"
|
||||||
|
|
||||||
|
#include "crypto_scrypt.h"
|
||||||
|
|
||||||
|
static void blkcpy(uint8_t *, uint8_t *, size_t);
|
||||||
|
static void blkxor(uint8_t *, uint8_t *, size_t);
|
||||||
|
static void salsa20_8(uint8_t[64]);
|
||||||
|
static void blockmix_salsa8(uint8_t *, uint8_t *, size_t);
|
||||||
|
static uint64_t integerify(uint8_t *, size_t);
|
||||||
|
static void smix(uint8_t *, size_t, uint64_t, uint8_t *, uint8_t *);
|
||||||
|
|
||||||
|
static void
|
||||||
|
blkcpy(uint8_t * dest, uint8_t * src, size_t len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
dest[i] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
blkxor(uint8_t * dest, uint8_t * src, size_t len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
dest[i] ^= src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* salsa20_8(B):
|
||||||
|
* Apply the salsa20/8 core to the provided block.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
salsa20_8(uint8_t B[64])
|
||||||
|
{
|
||||||
|
uint32_t B32[16];
|
||||||
|
uint32_t x[16];
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
/* Convert little-endian values in. */
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
B32[i] = le32dec(&B[i * 4]);
|
||||||
|
|
||||||
|
/* Compute x = doubleround^4(B32). */
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
x[i] = B32[i];
|
||||||
|
for (i = 0; i < 8; i += 2) {
|
||||||
|
#define R(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
|
||||||
|
/* Operate on columns. */
|
||||||
|
x[ 4] ^= R(x[ 0]+x[12], 7); x[ 8] ^= R(x[ 4]+x[ 0], 9);
|
||||||
|
x[12] ^= R(x[ 8]+x[ 4],13); x[ 0] ^= R(x[12]+x[ 8],18);
|
||||||
|
|
||||||
|
x[ 9] ^= R(x[ 5]+x[ 1], 7); x[13] ^= R(x[ 9]+x[ 5], 9);
|
||||||
|
x[ 1] ^= R(x[13]+x[ 9],13); x[ 5] ^= R(x[ 1]+x[13],18);
|
||||||
|
|
||||||
|
x[14] ^= R(x[10]+x[ 6], 7); x[ 2] ^= R(x[14]+x[10], 9);
|
||||||
|
x[ 6] ^= R(x[ 2]+x[14],13); x[10] ^= R(x[ 6]+x[ 2],18);
|
||||||
|
|
||||||
|
x[ 3] ^= R(x[15]+x[11], 7); x[ 7] ^= R(x[ 3]+x[15], 9);
|
||||||
|
x[11] ^= R(x[ 7]+x[ 3],13); x[15] ^= R(x[11]+x[ 7],18);
|
||||||
|
|
||||||
|
/* Operate on rows. */
|
||||||
|
x[ 1] ^= R(x[ 0]+x[ 3], 7); x[ 2] ^= R(x[ 1]+x[ 0], 9);
|
||||||
|
x[ 3] ^= R(x[ 2]+x[ 1],13); x[ 0] ^= R(x[ 3]+x[ 2],18);
|
||||||
|
|
||||||
|
x[ 6] ^= R(x[ 5]+x[ 4], 7); x[ 7] ^= R(x[ 6]+x[ 5], 9);
|
||||||
|
x[ 4] ^= R(x[ 7]+x[ 6],13); x[ 5] ^= R(x[ 4]+x[ 7],18);
|
||||||
|
|
||||||
|
x[11] ^= R(x[10]+x[ 9], 7); x[ 8] ^= R(x[11]+x[10], 9);
|
||||||
|
x[ 9] ^= R(x[ 8]+x[11],13); x[10] ^= R(x[ 9]+x[ 8],18);
|
||||||
|
|
||||||
|
x[12] ^= R(x[15]+x[14], 7); x[13] ^= R(x[12]+x[15], 9);
|
||||||
|
x[14] ^= R(x[13]+x[12],13); x[15] ^= R(x[14]+x[13],18);
|
||||||
|
#undef R
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Compute B32 = B32 + x. */
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
B32[i] += x[i];
|
||||||
|
|
||||||
|
/* Convert little-endian values out. */
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
le32enc(&B[4 * i], B32[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blockmix_salsa8(B, Y, r):
|
||||||
|
* Compute B = BlockMix_{salsa20/8, r}(B). The input B must be 128r bytes in
|
||||||
|
* length; the temporary space Y must also be the same size.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
blockmix_salsa8(uint8_t * B, uint8_t * Y, size_t r)
|
||||||
|
{
|
||||||
|
uint8_t X[64];
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
/* 1: X <-- B_{2r - 1} */
|
||||||
|
blkcpy(X, &B[(2 * r - 1) * 64], 64);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to 2r - 1 do */
|
||||||
|
for (i = 0; i < 2 * r; i++) {
|
||||||
|
/* 3: X <-- H(X \xor B_i) */
|
||||||
|
blkxor(X, &B[i * 64], 64);
|
||||||
|
salsa20_8(X);
|
||||||
|
|
||||||
|
/* 4: Y_i <-- X */
|
||||||
|
blkcpy(&Y[i * 64], X, 64);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
|
||||||
|
for (i = 0; i < r; i++)
|
||||||
|
blkcpy(&B[i * 64], &Y[(i * 2) * 64], 64);
|
||||||
|
for (i = 0; i < r; i++)
|
||||||
|
blkcpy(&B[(i + r) * 64], &Y[(i * 2 + 1) * 64], 64);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* integerify(B, r):
|
||||||
|
* Return the result of parsing B_{2r-1} as a little-endian integer.
|
||||||
|
*/
|
||||||
|
static uint64_t
|
||||||
|
integerify(uint8_t * B, size_t r)
|
||||||
|
{
|
||||||
|
uint8_t * X = &B[(2 * r - 1) * 64];
|
||||||
|
|
||||||
|
return (le64dec(X));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* smix(B, r, N, V, XY):
|
||||||
|
* Compute B = SMix_r(B, N). The input B must be 128r bytes in length; the
|
||||||
|
* temporary storage V must be 128rN bytes in length; the temporary storage
|
||||||
|
* XY must be 256r bytes in length. The value N must be a power of 2.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
smix(uint8_t * B, size_t r, uint64_t N, uint8_t * V, uint8_t * XY)
|
||||||
|
{
|
||||||
|
uint8_t * X = XY;
|
||||||
|
uint8_t * Y = &XY[128 * r];
|
||||||
|
uint64_t i;
|
||||||
|
uint64_t j;
|
||||||
|
|
||||||
|
/* 1: X <-- B */
|
||||||
|
blkcpy(X, B, 128 * r);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to N - 1 do */
|
||||||
|
for (i = 0; i < N; i++) {
|
||||||
|
/* 3: V_i <-- X */
|
||||||
|
blkcpy(&V[i * (128 * r)], X, 128 * r);
|
||||||
|
|
||||||
|
/* 4: X <-- H(X) */
|
||||||
|
blockmix_salsa8(X, Y, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 6: for i = 0 to N - 1 do */
|
||||||
|
for (i = 0; i < N; i++) {
|
||||||
|
/* 7: j <-- Integerify(X) mod N */
|
||||||
|
j = integerify(X, r) & (N - 1);
|
||||||
|
|
||||||
|
/* 8: X <-- H(X \xor V_j) */
|
||||||
|
blkxor(X, &V[j * (128 * r)], 128 * r);
|
||||||
|
blockmix_salsa8(X, Y, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 10: B' <-- X */
|
||||||
|
blkcpy(B, X, 128 * r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
|
||||||
|
* Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
|
||||||
|
* p, buflen) and write the result into buf. The parameters r, p, and buflen
|
||||||
|
* must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
|
||||||
|
* must be a power of 2.
|
||||||
|
*
|
||||||
|
* Return 0 on success; or -1 on error.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
|
||||||
|
const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
|
||||||
|
uint8_t * buf, size_t buflen)
|
||||||
|
{
|
||||||
|
uint8_t * B;
|
||||||
|
uint8_t * V;
|
||||||
|
uint8_t * XY;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
/* Sanity-check parameters. */
|
||||||
|
#if SIZE_MAX > UINT32_MAX
|
||||||
|
if (buflen > (((uint64_t)(1) << 32) - 1) * 32) {
|
||||||
|
errno = EFBIG;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if ((uint64_t)(r) * (uint64_t)(p) >= (1 << 30)) {
|
||||||
|
errno = EFBIG;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
if (((N & (N - 1)) != 0) || (N == 0)) {
|
||||||
|
errno = EINVAL;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
if ((r > SIZE_MAX / 128 / p) ||
|
||||||
|
#if SIZE_MAX / 256 <= UINT32_MAX
|
||||||
|
(r > SIZE_MAX / 256) ||
|
||||||
|
#endif
|
||||||
|
(N > SIZE_MAX / 128 / r)) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate memory. */
|
||||||
|
if ((B = malloc(128 * r * p)) == NULL)
|
||||||
|
goto err0;
|
||||||
|
if ((XY = malloc(256 * r)) == NULL)
|
||||||
|
goto err1;
|
||||||
|
if ((V = malloc(128 * r * N)) == NULL)
|
||||||
|
goto err2;
|
||||||
|
|
||||||
|
/* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
|
||||||
|
PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to p - 1 do */
|
||||||
|
for (i = 0; i < p; i++) {
|
||||||
|
/* 3: B_i <-- MF(B_i, N) */
|
||||||
|
smix(&B[i * 128 * r], r, N, V, XY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
|
||||||
|
PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
|
||||||
|
|
||||||
|
/* Free memory. */
|
||||||
|
free(V);
|
||||||
|
free(XY);
|
||||||
|
free(B);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
err2:
|
||||||
|
free(XY);
|
||||||
|
err1:
|
||||||
|
free(B);
|
||||||
|
err0:
|
||||||
|
/* Failure! */
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
366
libpcp/scrypt/crypto/crypto_scrypt-sse.c
Normal file
366
libpcp/scrypt/crypto/crypto_scrypt-sse.c
Normal file
@@ -0,0 +1,366 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
|
#include <emmintrin.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "sha256.h"
|
||||||
|
#include "sysendian.h"
|
||||||
|
|
||||||
|
#include "crypto_scrypt.h"
|
||||||
|
|
||||||
|
static void blkcpy(void *, void *, size_t);
|
||||||
|
static void blkxor(void *, void *, size_t);
|
||||||
|
static void salsa20_8(__m128i *);
|
||||||
|
static void blockmix_salsa8(__m128i *, __m128i *, __m128i *, size_t);
|
||||||
|
static uint64_t integerify(void *, size_t);
|
||||||
|
static void smix(uint8_t *, size_t, uint64_t, void *, void *);
|
||||||
|
|
||||||
|
static void
|
||||||
|
blkcpy(void * dest, void * src, size_t len)
|
||||||
|
{
|
||||||
|
__m128i * D = dest;
|
||||||
|
__m128i * S = src;
|
||||||
|
size_t L = len / 16;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < L; i++)
|
||||||
|
D[i] = S[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
blkxor(void * dest, void * src, size_t len)
|
||||||
|
{
|
||||||
|
__m128i * D = dest;
|
||||||
|
__m128i * S = src;
|
||||||
|
size_t L = len / 16;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < L; i++)
|
||||||
|
D[i] = _mm_xor_si128(D[i], S[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* salsa20_8(B):
|
||||||
|
* Apply the salsa20/8 core to the provided block.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
salsa20_8(__m128i B[4])
|
||||||
|
{
|
||||||
|
__m128i X0, X1, X2, X3;
|
||||||
|
__m128i T;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
X0 = B[0];
|
||||||
|
X1 = B[1];
|
||||||
|
X2 = B[2];
|
||||||
|
X3 = B[3];
|
||||||
|
|
||||||
|
for (i = 0; i < 8; i += 2) {
|
||||||
|
/* Operate on "columns". */
|
||||||
|
T = _mm_add_epi32(X0, X3);
|
||||||
|
X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 7));
|
||||||
|
X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 25));
|
||||||
|
T = _mm_add_epi32(X1, X0);
|
||||||
|
X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9));
|
||||||
|
X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23));
|
||||||
|
T = _mm_add_epi32(X2, X1);
|
||||||
|
X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 13));
|
||||||
|
X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 19));
|
||||||
|
T = _mm_add_epi32(X3, X2);
|
||||||
|
X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18));
|
||||||
|
X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14));
|
||||||
|
|
||||||
|
/* Rearrange data. */
|
||||||
|
X1 = _mm_shuffle_epi32(X1, 0x93);
|
||||||
|
X2 = _mm_shuffle_epi32(X2, 0x4E);
|
||||||
|
X3 = _mm_shuffle_epi32(X3, 0x39);
|
||||||
|
|
||||||
|
/* Operate on "rows". */
|
||||||
|
T = _mm_add_epi32(X0, X1);
|
||||||
|
X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 7));
|
||||||
|
X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 25));
|
||||||
|
T = _mm_add_epi32(X3, X0);
|
||||||
|
X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9));
|
||||||
|
X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23));
|
||||||
|
T = _mm_add_epi32(X2, X3);
|
||||||
|
X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 13));
|
||||||
|
X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 19));
|
||||||
|
T = _mm_add_epi32(X1, X2);
|
||||||
|
X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18));
|
||||||
|
X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14));
|
||||||
|
|
||||||
|
/* Rearrange data. */
|
||||||
|
X1 = _mm_shuffle_epi32(X1, 0x39);
|
||||||
|
X2 = _mm_shuffle_epi32(X2, 0x4E);
|
||||||
|
X3 = _mm_shuffle_epi32(X3, 0x93);
|
||||||
|
}
|
||||||
|
|
||||||
|
B[0] = _mm_add_epi32(B[0], X0);
|
||||||
|
B[1] = _mm_add_epi32(B[1], X1);
|
||||||
|
B[2] = _mm_add_epi32(B[2], X2);
|
||||||
|
B[3] = _mm_add_epi32(B[3], X3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blockmix_salsa8(Bin, Bout, X, r):
|
||||||
|
* Compute Bout = BlockMix_{salsa20/8, r}(Bin). The input Bin must be 128r
|
||||||
|
* bytes in length; the output Bout must also be the same size. The
|
||||||
|
* temporary space X must be 64 bytes.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
blockmix_salsa8(__m128i * Bin, __m128i * Bout, __m128i * X, size_t r)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
/* 1: X <-- B_{2r - 1} */
|
||||||
|
blkcpy(X, &Bin[8 * r - 4], 64);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to 2r - 1 do */
|
||||||
|
for (i = 0; i < r; i++) {
|
||||||
|
/* 3: X <-- H(X \xor B_i) */
|
||||||
|
blkxor(X, &Bin[i * 8], 64);
|
||||||
|
salsa20_8(X);
|
||||||
|
|
||||||
|
/* 4: Y_i <-- X */
|
||||||
|
/* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
|
||||||
|
blkcpy(&Bout[i * 4], X, 64);
|
||||||
|
|
||||||
|
/* 3: X <-- H(X \xor B_i) */
|
||||||
|
blkxor(X, &Bin[i * 8 + 4], 64);
|
||||||
|
salsa20_8(X);
|
||||||
|
|
||||||
|
/* 4: Y_i <-- X */
|
||||||
|
/* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
|
||||||
|
blkcpy(&Bout[(r + i) * 4], X, 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* integerify(B, r):
|
||||||
|
* Return the result of parsing B_{2r-1} as a little-endian integer.
|
||||||
|
*/
|
||||||
|
static uint64_t
|
||||||
|
integerify(void * B, size_t r)
|
||||||
|
{
|
||||||
|
uint32_t * X = (void *)((uintptr_t)(B) + (2 * r - 1) * 64);
|
||||||
|
|
||||||
|
return (((uint64_t)(X[13]) << 32) + X[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* smix(B, r, N, V, XY):
|
||||||
|
* Compute B = SMix_r(B, N). The input B must be 128r bytes in length;
|
||||||
|
* the temporary storage V must be 128rN bytes in length; the temporary
|
||||||
|
* storage XY must be 256r + 64 bytes in length. The value N must be a
|
||||||
|
* power of 2 greater than 1. The arrays B, V, and XY must be aligned to a
|
||||||
|
* multiple of 64 bytes.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
smix(uint8_t * B, size_t r, uint64_t N, void * V, void * XY)
|
||||||
|
{
|
||||||
|
__m128i * X = XY;
|
||||||
|
__m128i * Y = (void *)((uintptr_t)(XY) + 128 * r);
|
||||||
|
__m128i * Z = (void *)((uintptr_t)(XY) + 256 * r);
|
||||||
|
uint32_t * X32 = (void *)X;
|
||||||
|
uint64_t i, j;
|
||||||
|
size_t k;
|
||||||
|
|
||||||
|
/* 1: X <-- B */
|
||||||
|
for (k = 0; k < 2 * r; k++) {
|
||||||
|
for (i = 0; i < 16; i++) {
|
||||||
|
X32[k * 16 + i] =
|
||||||
|
le32dec(&B[(k * 16 + (i * 5 % 16)) * 4]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2: for i = 0 to N - 1 do */
|
||||||
|
for (i = 0; i < N; i += 2) {
|
||||||
|
/* 3: V_i <-- X */
|
||||||
|
blkcpy((void *)((uintptr_t)(V) + i * 128 * r), X, 128 * r);
|
||||||
|
|
||||||
|
/* 4: X <-- H(X) */
|
||||||
|
blockmix_salsa8(X, Y, Z, r);
|
||||||
|
|
||||||
|
/* 3: V_i <-- X */
|
||||||
|
blkcpy((void *)((uintptr_t)(V) + (i + 1) * 128 * r),
|
||||||
|
Y, 128 * r);
|
||||||
|
|
||||||
|
/* 4: X <-- H(X) */
|
||||||
|
blockmix_salsa8(Y, X, Z, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 6: for i = 0 to N - 1 do */
|
||||||
|
for (i = 0; i < N; i += 2) {
|
||||||
|
/* 7: j <-- Integerify(X) mod N */
|
||||||
|
j = integerify(X, r) & (N - 1);
|
||||||
|
|
||||||
|
/* 8: X <-- H(X \xor V_j) */
|
||||||
|
blkxor(X, (void *)((uintptr_t)(V) + j * 128 * r), 128 * r);
|
||||||
|
blockmix_salsa8(X, Y, Z, r);
|
||||||
|
|
||||||
|
/* 7: j <-- Integerify(X) mod N */
|
||||||
|
j = integerify(Y, r) & (N - 1);
|
||||||
|
|
||||||
|
/* 8: X <-- H(X \xor V_j) */
|
||||||
|
blkxor(Y, (void *)((uintptr_t)(V) + j * 128 * r), 128 * r);
|
||||||
|
blockmix_salsa8(Y, X, Z, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 10: B' <-- X */
|
||||||
|
for (k = 0; k < 2 * r; k++) {
|
||||||
|
for (i = 0; i < 16; i++) {
|
||||||
|
le32enc(&B[(k * 16 + (i * 5 % 16)) * 4],
|
||||||
|
X32[k * 16 + i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
|
||||||
|
* Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
|
||||||
|
* p, buflen) and write the result into buf. The parameters r, p, and buflen
|
||||||
|
* must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
|
||||||
|
* must be a power of 2 greater than 1.
|
||||||
|
*
|
||||||
|
* Return 0 on success; or -1 on error.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
|
||||||
|
const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t r, uint32_t p,
|
||||||
|
uint8_t * buf, size_t buflen)
|
||||||
|
{
|
||||||
|
void * B0, * V0, * XY0;
|
||||||
|
uint8_t * B;
|
||||||
|
uint32_t * V;
|
||||||
|
uint32_t * XY;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
/* Sanity-check parameters. */
|
||||||
|
#if SIZE_MAX > UINT32_MAX
|
||||||
|
if (buflen > (((uint64_t)(1) << 32) - 1) * 32) {
|
||||||
|
errno = EFBIG;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if ((uint64_t)(r) * (uint64_t)(p) >= (1 << 30)) {
|
||||||
|
errno = EFBIG;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
if (((N & (N - 1)) != 0) || (N == 0)) {
|
||||||
|
errno = EINVAL;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
if ((r > SIZE_MAX / 128 / p) ||
|
||||||
|
#if SIZE_MAX / 256 <= UINT32_MAX
|
||||||
|
(r > (SIZE_MAX - 64) / 256) ||
|
||||||
|
#endif
|
||||||
|
(N > SIZE_MAX / 128 / r)) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate memory. */
|
||||||
|
#ifdef HAVE_POSIX_MEMALIGN
|
||||||
|
if ((errno = posix_memalign(&B0, 64, 128 * r * p)) != 0)
|
||||||
|
goto err0;
|
||||||
|
B = (uint8_t *)(B0);
|
||||||
|
if ((errno = posix_memalign(&XY0, 64, 256 * r + 64)) != 0)
|
||||||
|
goto err1;
|
||||||
|
XY = (uint32_t *)(XY0);
|
||||||
|
#ifndef MAP_ANON
|
||||||
|
if ((errno = posix_memalign(&V0, 64, 128 * r * N)) != 0)
|
||||||
|
goto err2;
|
||||||
|
V = (uint32_t *)(V0);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
if ((B0 = malloc(128 * r * p + 63)) == NULL)
|
||||||
|
goto err0;
|
||||||
|
B = (uint8_t *)(((uintptr_t)(B0) + 63) & ~ (uintptr_t)(63));
|
||||||
|
if ((XY0 = malloc(256 * r + 64 + 63)) == NULL)
|
||||||
|
goto err1;
|
||||||
|
XY = (uint32_t *)(((uintptr_t)(XY0) + 63) & ~ (uintptr_t)(63));
|
||||||
|
#ifndef MAP_ANON
|
||||||
|
if ((V0 = malloc(128 * r * N + 63)) == NULL)
|
||||||
|
goto err2;
|
||||||
|
V = (uint32_t *)(((uintptr_t)(V0) + 63) & ~ (uintptr_t)(63));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef MAP_ANON
|
||||||
|
if ((V0 = mmap(NULL, 128 * r * N, PROT_READ | PROT_WRITE,
|
||||||
|
#ifdef MAP_NOCORE
|
||||||
|
MAP_ANON | MAP_PRIVATE | MAP_NOCORE,
|
||||||
|
#else
|
||||||
|
MAP_ANON | MAP_PRIVATE,
|
||||||
|
#endif
|
||||||
|
-1, 0)) == MAP_FAILED)
|
||||||
|
goto err2;
|
||||||
|
V = (uint32_t *)(V0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
|
||||||
|
PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
|
||||||
|
|
||||||
|
/* 2: for i = 0 to p - 1 do */
|
||||||
|
for (i = 0; i < p; i++) {
|
||||||
|
/* 3: B_i <-- MF(B_i, N) */
|
||||||
|
smix(&B[i * 128 * r], r, N, V, XY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
|
||||||
|
PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
|
||||||
|
|
||||||
|
/* Free memory. */
|
||||||
|
#ifdef MAP_ANON
|
||||||
|
if (munmap(V0, 128 * r * N))
|
||||||
|
goto err2;
|
||||||
|
#else
|
||||||
|
free(V0);
|
||||||
|
#endif
|
||||||
|
free(XY0);
|
||||||
|
free(B0);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
err2:
|
||||||
|
free(XY0);
|
||||||
|
err1:
|
||||||
|
free(B0);
|
||||||
|
err0:
|
||||||
|
/* Failure! */
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
46
libpcp/scrypt/crypto/crypto_scrypt.h
Normal file
46
libpcp/scrypt/crypto/crypto_scrypt.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/*-
|
||||||
|
* 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_SCRYPT_H_
|
||||||
|
#define _CRYPTO_SCRYPT_H_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
|
||||||
|
* Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
|
||||||
|
* p, buflen) and write the result into buf. The parameters r, p, and buflen
|
||||||
|
* must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
|
||||||
|
* must be a power of 2 greater than 1.
|
||||||
|
*
|
||||||
|
* Return 0 on success; or -1 on error.
|
||||||
|
*/
|
||||||
|
int crypto_scrypt(const uint8_t *, size_t, const uint8_t *, size_t, uint64_t,
|
||||||
|
uint32_t, uint32_t, uint8_t *, size_t);
|
||||||
|
|
||||||
|
#endif /* !_CRYPTO_SCRYPT_H_ */
|
||||||
0
libpcp/scrypt/crypto/scrypt_platform.h
Normal file
0
libpcp/scrypt/crypto/scrypt_platform.h
Normal file
412
libpcp/scrypt/crypto/sha256.c
Normal file
412
libpcp/scrypt/crypto/sha256.c
Normal file
@@ -0,0 +1,412 @@
|
|||||||
|
/*-
|
||||||
|
* Copyright 2005,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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "sysendian.h"
|
||||||
|
|
||||||
|
#include "sha256.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Encode a length len/4 vector of (uint32_t) into a length len vector of
|
||||||
|
* (unsigned char) in big-endian form. Assumes len is a multiple of 4.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
be32enc_vect(unsigned char *dst, const uint32_t *src, size_t len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < len / 4; i++)
|
||||||
|
be32enc(dst + i * 4, src[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Decode a big-endian length len vector of (unsigned char) into a length
|
||||||
|
* len/4 vector of (uint32_t). Assumes len is a multiple of 4.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
be32dec_vect(uint32_t *dst, const unsigned char *src, size_t len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < len / 4; i++)
|
||||||
|
dst[i] = be32dec(src + i * 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Elementary functions used by SHA256 */
|
||||||
|
#define Ch(x, y, z) ((x & (y ^ z)) ^ z)
|
||||||
|
#define Maj(x, y, z) ((x & (y | z)) | (y & z))
|
||||||
|
#define SHR(x, n) (x >> n)
|
||||||
|
#define ROTR(x, n) ((x >> n) | (x << (32 - n)))
|
||||||
|
#define S0(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22))
|
||||||
|
#define S1(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25))
|
||||||
|
#define s0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3))
|
||||||
|
#define s1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10))
|
||||||
|
|
||||||
|
/* SHA256 round function */
|
||||||
|
#define RND(a, b, c, d, e, f, g, h, k) \
|
||||||
|
t0 = h + S1(e) + Ch(e, f, g) + k; \
|
||||||
|
t1 = S0(a) + Maj(a, b, c); \
|
||||||
|
d += t0; \
|
||||||
|
h = t0 + t1;
|
||||||
|
|
||||||
|
/* Adjusted round function for rotating state */
|
||||||
|
#define RNDr(S, W, i, k) \
|
||||||
|
RND(S[(64 - i) % 8], S[(65 - i) % 8], \
|
||||||
|
S[(66 - i) % 8], S[(67 - i) % 8], \
|
||||||
|
S[(68 - i) % 8], S[(69 - i) % 8], \
|
||||||
|
S[(70 - i) % 8], S[(71 - i) % 8], \
|
||||||
|
W[i] + k)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHA256 block compression function. The 256-bit state is transformed via
|
||||||
|
* the 512-bit input block to produce a new state.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
SHA256_Transform(uint32_t * state, const unsigned char block[64])
|
||||||
|
{
|
||||||
|
uint32_t W[64];
|
||||||
|
uint32_t S[8];
|
||||||
|
uint32_t t0, t1;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* 1. Prepare message schedule W. */
|
||||||
|
be32dec_vect(W, block, 64);
|
||||||
|
for (i = 16; i < 64; i++)
|
||||||
|
W[i] = s1(W[i - 2]) + W[i - 7] + s0(W[i - 15]) + W[i - 16];
|
||||||
|
|
||||||
|
/* 2. Initialize working variables. */
|
||||||
|
memcpy(S, state, 32);
|
||||||
|
|
||||||
|
/* 3. Mix. */
|
||||||
|
RNDr(S, W, 0, 0x428a2f98);
|
||||||
|
RNDr(S, W, 1, 0x71374491);
|
||||||
|
RNDr(S, W, 2, 0xb5c0fbcf);
|
||||||
|
RNDr(S, W, 3, 0xe9b5dba5);
|
||||||
|
RNDr(S, W, 4, 0x3956c25b);
|
||||||
|
RNDr(S, W, 5, 0x59f111f1);
|
||||||
|
RNDr(S, W, 6, 0x923f82a4);
|
||||||
|
RNDr(S, W, 7, 0xab1c5ed5);
|
||||||
|
RNDr(S, W, 8, 0xd807aa98);
|
||||||
|
RNDr(S, W, 9, 0x12835b01);
|
||||||
|
RNDr(S, W, 10, 0x243185be);
|
||||||
|
RNDr(S, W, 11, 0x550c7dc3);
|
||||||
|
RNDr(S, W, 12, 0x72be5d74);
|
||||||
|
RNDr(S, W, 13, 0x80deb1fe);
|
||||||
|
RNDr(S, W, 14, 0x9bdc06a7);
|
||||||
|
RNDr(S, W, 15, 0xc19bf174);
|
||||||
|
RNDr(S, W, 16, 0xe49b69c1);
|
||||||
|
RNDr(S, W, 17, 0xefbe4786);
|
||||||
|
RNDr(S, W, 18, 0x0fc19dc6);
|
||||||
|
RNDr(S, W, 19, 0x240ca1cc);
|
||||||
|
RNDr(S, W, 20, 0x2de92c6f);
|
||||||
|
RNDr(S, W, 21, 0x4a7484aa);
|
||||||
|
RNDr(S, W, 22, 0x5cb0a9dc);
|
||||||
|
RNDr(S, W, 23, 0x76f988da);
|
||||||
|
RNDr(S, W, 24, 0x983e5152);
|
||||||
|
RNDr(S, W, 25, 0xa831c66d);
|
||||||
|
RNDr(S, W, 26, 0xb00327c8);
|
||||||
|
RNDr(S, W, 27, 0xbf597fc7);
|
||||||
|
RNDr(S, W, 28, 0xc6e00bf3);
|
||||||
|
RNDr(S, W, 29, 0xd5a79147);
|
||||||
|
RNDr(S, W, 30, 0x06ca6351);
|
||||||
|
RNDr(S, W, 31, 0x14292967);
|
||||||
|
RNDr(S, W, 32, 0x27b70a85);
|
||||||
|
RNDr(S, W, 33, 0x2e1b2138);
|
||||||
|
RNDr(S, W, 34, 0x4d2c6dfc);
|
||||||
|
RNDr(S, W, 35, 0x53380d13);
|
||||||
|
RNDr(S, W, 36, 0x650a7354);
|
||||||
|
RNDr(S, W, 37, 0x766a0abb);
|
||||||
|
RNDr(S, W, 38, 0x81c2c92e);
|
||||||
|
RNDr(S, W, 39, 0x92722c85);
|
||||||
|
RNDr(S, W, 40, 0xa2bfe8a1);
|
||||||
|
RNDr(S, W, 41, 0xa81a664b);
|
||||||
|
RNDr(S, W, 42, 0xc24b8b70);
|
||||||
|
RNDr(S, W, 43, 0xc76c51a3);
|
||||||
|
RNDr(S, W, 44, 0xd192e819);
|
||||||
|
RNDr(S, W, 45, 0xd6990624);
|
||||||
|
RNDr(S, W, 46, 0xf40e3585);
|
||||||
|
RNDr(S, W, 47, 0x106aa070);
|
||||||
|
RNDr(S, W, 48, 0x19a4c116);
|
||||||
|
RNDr(S, W, 49, 0x1e376c08);
|
||||||
|
RNDr(S, W, 50, 0x2748774c);
|
||||||
|
RNDr(S, W, 51, 0x34b0bcb5);
|
||||||
|
RNDr(S, W, 52, 0x391c0cb3);
|
||||||
|
RNDr(S, W, 53, 0x4ed8aa4a);
|
||||||
|
RNDr(S, W, 54, 0x5b9cca4f);
|
||||||
|
RNDr(S, W, 55, 0x682e6ff3);
|
||||||
|
RNDr(S, W, 56, 0x748f82ee);
|
||||||
|
RNDr(S, W, 57, 0x78a5636f);
|
||||||
|
RNDr(S, W, 58, 0x84c87814);
|
||||||
|
RNDr(S, W, 59, 0x8cc70208);
|
||||||
|
RNDr(S, W, 60, 0x90befffa);
|
||||||
|
RNDr(S, W, 61, 0xa4506ceb);
|
||||||
|
RNDr(S, W, 62, 0xbef9a3f7);
|
||||||
|
RNDr(S, W, 63, 0xc67178f2);
|
||||||
|
|
||||||
|
/* 4. Mix local working variables into global state */
|
||||||
|
for (i = 0; i < 8; i++)
|
||||||
|
state[i] += S[i];
|
||||||
|
|
||||||
|
/* Clean the stack. */
|
||||||
|
memset(W, 0, 256);
|
||||||
|
memset(S, 0, 32);
|
||||||
|
t0 = t1 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned char PAD[64] = {
|
||||||
|
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Add padding and terminating bit-count. */
|
||||||
|
static void
|
||||||
|
SHA256_Pad(SHA256_CTX * ctx)
|
||||||
|
{
|
||||||
|
unsigned char len[8];
|
||||||
|
uint32_t r, plen;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert length to a vector of bytes -- we do this now rather
|
||||||
|
* than later because the length will change after we pad.
|
||||||
|
*/
|
||||||
|
be32enc_vect(len, ctx->count, 8);
|
||||||
|
|
||||||
|
/* Add 1--64 bytes so that the resulting length is 56 mod 64 */
|
||||||
|
r = (ctx->count[1] >> 3) & 0x3f;
|
||||||
|
plen = (r < 56) ? (56 - r) : (120 - r);
|
||||||
|
SHA256_Update(ctx, PAD, (size_t)plen);
|
||||||
|
|
||||||
|
/* Add the terminating bit-count */
|
||||||
|
SHA256_Update(ctx, len, 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SHA-256 initialization. Begins a SHA-256 operation. */
|
||||||
|
void
|
||||||
|
SHA256_Init(SHA256_CTX * ctx)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Zero bits processed so far */
|
||||||
|
ctx->count[0] = ctx->count[1] = 0;
|
||||||
|
|
||||||
|
/* Magic initialization constants */
|
||||||
|
ctx->state[0] = 0x6A09E667;
|
||||||
|
ctx->state[1] = 0xBB67AE85;
|
||||||
|
ctx->state[2] = 0x3C6EF372;
|
||||||
|
ctx->state[3] = 0xA54FF53A;
|
||||||
|
ctx->state[4] = 0x510E527F;
|
||||||
|
ctx->state[5] = 0x9B05688C;
|
||||||
|
ctx->state[6] = 0x1F83D9AB;
|
||||||
|
ctx->state[7] = 0x5BE0CD19;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add bytes into the hash */
|
||||||
|
void
|
||||||
|
SHA256_Update(SHA256_CTX * ctx, const void *in, size_t len)
|
||||||
|
{
|
||||||
|
uint32_t bitlen[2];
|
||||||
|
uint32_t r;
|
||||||
|
const unsigned char *src = in;
|
||||||
|
|
||||||
|
/* Number of bytes left in the buffer from previous updates */
|
||||||
|
r = (ctx->count[1] >> 3) & 0x3f;
|
||||||
|
|
||||||
|
/* Convert the length into a number of bits */
|
||||||
|
bitlen[1] = ((uint32_t)len) << 3;
|
||||||
|
bitlen[0] = (uint32_t)(len >> 29);
|
||||||
|
|
||||||
|
/* Update number of bits */
|
||||||
|
if ((ctx->count[1] += bitlen[1]) < bitlen[1])
|
||||||
|
ctx->count[0]++;
|
||||||
|
ctx->count[0] += bitlen[0];
|
||||||
|
|
||||||
|
/* Handle the case where we don't need to perform any transforms */
|
||||||
|
if (len < 64 - r) {
|
||||||
|
memcpy(&ctx->buf[r], src, len);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finish the current block */
|
||||||
|
memcpy(&ctx->buf[r], src, 64 - r);
|
||||||
|
SHA256_Transform(ctx->state, ctx->buf);
|
||||||
|
src += 64 - r;
|
||||||
|
len -= 64 - r;
|
||||||
|
|
||||||
|
/* Perform complete blocks */
|
||||||
|
while (len >= 64) {
|
||||||
|
SHA256_Transform(ctx->state, src);
|
||||||
|
src += 64;
|
||||||
|
len -= 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Copy left over data into buffer */
|
||||||
|
memcpy(ctx->buf, src, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHA-256 finalization. Pads the input data, exports the hash value,
|
||||||
|
* and clears the context state.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
SHA256_Final(unsigned char digest[32], SHA256_CTX * ctx)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Add padding */
|
||||||
|
SHA256_Pad(ctx);
|
||||||
|
|
||||||
|
/* Write the hash */
|
||||||
|
be32enc_vect(digest, ctx->state, 32);
|
||||||
|
|
||||||
|
/* Clear the context state */
|
||||||
|
memset((void *)ctx, 0, sizeof(*ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize an HMAC-SHA256 operation with the given key. */
|
||||||
|
void
|
||||||
|
HMAC_SHA256_Init(HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen)
|
||||||
|
{
|
||||||
|
unsigned char pad[64];
|
||||||
|
unsigned char khash[32];
|
||||||
|
const unsigned char * K = _K;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
/* If Klen > 64, the key is really SHA256(K). */
|
||||||
|
if (Klen > 64) {
|
||||||
|
SHA256_Init(&ctx->ictx);
|
||||||
|
SHA256_Update(&ctx->ictx, K, Klen);
|
||||||
|
SHA256_Final(khash, &ctx->ictx);
|
||||||
|
K = khash;
|
||||||
|
Klen = 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inner SHA256 operation is SHA256(K xor [block of 0x36] || data). */
|
||||||
|
SHA256_Init(&ctx->ictx);
|
||||||
|
memset(pad, 0x36, 64);
|
||||||
|
for (i = 0; i < Klen; i++)
|
||||||
|
pad[i] ^= K[i];
|
||||||
|
SHA256_Update(&ctx->ictx, pad, 64);
|
||||||
|
|
||||||
|
/* Outer SHA256 operation is SHA256(K xor [block of 0x5c] || hash). */
|
||||||
|
SHA256_Init(&ctx->octx);
|
||||||
|
memset(pad, 0x5c, 64);
|
||||||
|
for (i = 0; i < Klen; i++)
|
||||||
|
pad[i] ^= K[i];
|
||||||
|
SHA256_Update(&ctx->octx, pad, 64);
|
||||||
|
|
||||||
|
/* Clean the stack. */
|
||||||
|
memset(khash, 0, 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add bytes to the HMAC-SHA256 operation. */
|
||||||
|
void
|
||||||
|
HMAC_SHA256_Update(HMAC_SHA256_CTX * ctx, const void *in, size_t len)
|
||||||
|
{
|
||||||
|
|
||||||
|
/* Feed data to the inner SHA256 operation. */
|
||||||
|
SHA256_Update(&ctx->ictx, in, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finish an HMAC-SHA256 operation. */
|
||||||
|
void
|
||||||
|
HMAC_SHA256_Final(unsigned char digest[32], HMAC_SHA256_CTX * ctx)
|
||||||
|
{
|
||||||
|
unsigned char ihash[32];
|
||||||
|
|
||||||
|
/* Finish the inner SHA256 operation. */
|
||||||
|
SHA256_Final(ihash, &ctx->ictx);
|
||||||
|
|
||||||
|
/* Feed the inner hash to the outer SHA256 operation. */
|
||||||
|
SHA256_Update(&ctx->octx, ihash, 32);
|
||||||
|
|
||||||
|
/* Finish the outer SHA256 operation. */
|
||||||
|
SHA256_Final(digest, &ctx->octx);
|
||||||
|
|
||||||
|
/* Clean the stack. */
|
||||||
|
memset(ihash, 0, 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
|
||||||
|
* Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and
|
||||||
|
* write the output to buf. The value dkLen must be at most 32 * (2^32 - 1).
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
|
||||||
|
size_t saltlen, uint64_t c, uint8_t * buf, size_t dkLen)
|
||||||
|
{
|
||||||
|
HMAC_SHA256_CTX PShctx, hctx;
|
||||||
|
size_t i;
|
||||||
|
uint8_t ivec[4];
|
||||||
|
uint8_t U[32];
|
||||||
|
uint8_t T[32];
|
||||||
|
uint64_t j;
|
||||||
|
int k;
|
||||||
|
size_t clen;
|
||||||
|
|
||||||
|
/* Compute HMAC state after processing P and S. */
|
||||||
|
HMAC_SHA256_Init(&PShctx, passwd, passwdlen);
|
||||||
|
HMAC_SHA256_Update(&PShctx, salt, saltlen);
|
||||||
|
|
||||||
|
/* Iterate through the blocks. */
|
||||||
|
for (i = 0; i * 32 < dkLen; i++) {
|
||||||
|
/* Generate INT(i + 1). */
|
||||||
|
be32enc(ivec, (uint32_t)(i + 1));
|
||||||
|
|
||||||
|
/* Compute U_1 = PRF(P, S || INT(i)). */
|
||||||
|
memcpy(&hctx, &PShctx, sizeof(HMAC_SHA256_CTX));
|
||||||
|
HMAC_SHA256_Update(&hctx, ivec, 4);
|
||||||
|
HMAC_SHA256_Final(U, &hctx);
|
||||||
|
|
||||||
|
/* T_i = U_1 ... */
|
||||||
|
memcpy(T, U, 32);
|
||||||
|
|
||||||
|
for (j = 2; j <= c; j++) {
|
||||||
|
/* Compute U_j. */
|
||||||
|
HMAC_SHA256_Init(&hctx, passwd, passwdlen);
|
||||||
|
HMAC_SHA256_Update(&hctx, U, 32);
|
||||||
|
HMAC_SHA256_Final(U, &hctx);
|
||||||
|
|
||||||
|
/* ... xor U_j ... */
|
||||||
|
for (k = 0; k < 32; k++)
|
||||||
|
T[k] ^= U[k];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Copy as many bytes as necessary into buf. */
|
||||||
|
clen = dkLen - i * 32;
|
||||||
|
if (clen > 32)
|
||||||
|
clen = 32;
|
||||||
|
memcpy(&buf[i * 32], T, clen);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clean PShctx, since we never called _Final on it. */
|
||||||
|
memset(&PShctx, 0, sizeof(HMAC_SHA256_CTX));
|
||||||
|
}
|
||||||
62
libpcp/scrypt/crypto/sha256.h
Normal file
62
libpcp/scrypt/crypto/sha256.h
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/*-
|
||||||
|
* Copyright 2005,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.
|
||||||
|
*
|
||||||
|
* $FreeBSD: src/lib/libmd/sha256.h,v 1.2 2006/01/17 15:35:56 phk Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SHA256_H_
|
||||||
|
#define _SHA256_H_
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
typedef struct SHA256Context {
|
||||||
|
uint32_t state[8];
|
||||||
|
uint32_t count[2];
|
||||||
|
unsigned char buf[64];
|
||||||
|
} SHA256_CTX;
|
||||||
|
|
||||||
|
typedef struct HMAC_SHA256Context {
|
||||||
|
SHA256_CTX ictx;
|
||||||
|
SHA256_CTX octx;
|
||||||
|
} HMAC_SHA256_CTX;
|
||||||
|
|
||||||
|
void SHA256_Init(SHA256_CTX *);
|
||||||
|
void SHA256_Update(SHA256_CTX *, const void *, size_t);
|
||||||
|
void SHA256_Final(unsigned char [32], SHA256_CTX *);
|
||||||
|
void HMAC_SHA256_Init(HMAC_SHA256_CTX *, const void *, size_t);
|
||||||
|
void HMAC_SHA256_Update(HMAC_SHA256_CTX *, const void *, size_t);
|
||||||
|
void HMAC_SHA256_Final(unsigned char [32], HMAC_SHA256_CTX *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
|
||||||
|
* Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and
|
||||||
|
* write the output to buf. The value dkLen must be at most 32 * (2^32 - 1).
|
||||||
|
*/
|
||||||
|
void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t,
|
||||||
|
uint64_t, uint8_t *, size_t);
|
||||||
|
|
||||||
|
#endif /* !_SHA256_H_ */
|
||||||
BIN
libpcp/scrypt/crypto/sha256.o
Normal file
BIN
libpcp/scrypt/crypto/sha256.o
Normal file
Binary file not shown.
6
libpcp/scrypt/scrypt_platform.h
Normal file
6
libpcp/scrypt/scrypt_platform.h
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#ifndef _SCRYPT_PLATFORM_H_
|
||||||
|
#define _SCRYPT_PLATFORM_H_
|
||||||
|
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
#endif /* !_SCRYPT_PLATFORM_H_ */
|
||||||
606
libpcp/scrypt/scryptenc/scryptenc.c
Normal file
606
libpcp/scrypt/scryptenc/scryptenc.c
Normal file
@@ -0,0 +1,606 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <openssl/aes.h>
|
||||||
|
|
||||||
|
#include "crypto_aesctr.h"
|
||||||
|
#include "crypto_scrypt.h"
|
||||||
|
#include "memlimit.h"
|
||||||
|
#include "scryptenc_cpuperf.h"
|
||||||
|
#include "sha256.h"
|
||||||
|
#include "sysendian.h"
|
||||||
|
|
||||||
|
#include "scryptenc.h"
|
||||||
|
|
||||||
|
#define ENCBLOCK 65536
|
||||||
|
|
||||||
|
static int pickparams(size_t, double, double,
|
||||||
|
int *, uint32_t *, uint32_t *);
|
||||||
|
static int checkparams(size_t, double, double, int, uint32_t, uint32_t);
|
||||||
|
static int getsalt(uint8_t[32]);
|
||||||
|
|
||||||
|
static int
|
||||||
|
pickparams(size_t maxmem, double maxmemfrac, double maxtime,
|
||||||
|
int * logN, uint32_t * r, uint32_t * p)
|
||||||
|
{
|
||||||
|
size_t memlimit;
|
||||||
|
double opps;
|
||||||
|
double opslimit;
|
||||||
|
double maxN, maxrp;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* Figure out how much memory to use. */
|
||||||
|
if (memtouse(maxmem, maxmemfrac, &memlimit))
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
/* Figure out how fast the CPU is. */
|
||||||
|
if ((rc = scryptenc_cpuperf(&opps)) != 0)
|
||||||
|
return (rc);
|
||||||
|
opslimit = opps * maxtime;
|
||||||
|
|
||||||
|
/* Allow a minimum of 2^15 salsa20/8 cores. */
|
||||||
|
if (opslimit < 32768)
|
||||||
|
opslimit = 32768;
|
||||||
|
|
||||||
|
/* 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.
|
||||||
|
*/
|
||||||
|
#ifdef DEBUG
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
checkparams(size_t maxmem, double maxmemfrac, double maxtime,
|
||||||
|
int logN, uint32_t r, uint32_t p)
|
||||||
|
{
|
||||||
|
size_t memlimit;
|
||||||
|
double opps;
|
||||||
|
double opslimit;
|
||||||
|
uint64_t N;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* Figure out the maximum amount of memory we can use. */
|
||||||
|
if (memtouse(maxmem, maxmemfrac, &memlimit))
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
/* Figure out how fast the CPU is. */
|
||||||
|
if ((rc = scryptenc_cpuperf(&opps)) != 0)
|
||||||
|
return (rc);
|
||||||
|
opslimit = opps * maxtime;
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
getsalt(uint8_t salt[32])
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
ssize_t lenread;
|
||||||
|
uint8_t * buf = salt;
|
||||||
|
size_t buflen = 32;
|
||||||
|
|
||||||
|
/* Open /dev/urandom. */
|
||||||
|
if ((fd = open("/dev/urandom", O_RDONLY)) == -1)
|
||||||
|
goto err0;
|
||||||
|
|
||||||
|
/* Read bytes until we have filled the buffer. */
|
||||||
|
while (buflen > 0) {
|
||||||
|
if ((lenread = read(fd, buf, buflen)) == -1)
|
||||||
|
goto err1;
|
||||||
|
|
||||||
|
/* The random device should never EOF. */
|
||||||
|
if (lenread == 0)
|
||||||
|
goto err1;
|
||||||
|
|
||||||
|
/* We're partly done. */
|
||||||
|
buf += lenread;
|
||||||
|
buflen -= lenread;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close the device. */
|
||||||
|
while (close(fd) == -1) {
|
||||||
|
if (errno != EINTR)
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
err1:
|
||||||
|
close(fd);
|
||||||
|
err0:
|
||||||
|
/* Failure! */
|
||||||
|
return (4);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scryptenc_setup(uint8_t header[96], uint8_t dk[64],
|
||||||
|
const uint8_t * passwd, size_t passwdlen,
|
||||||
|
size_t maxmem, double maxmemfrac, double maxtime)
|
||||||
|
{
|
||||||
|
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, maxmemfrac, maxtime,
|
||||||
|
&logN, &r, &p)) != 0)
|
||||||
|
return (rc);
|
||||||
|
N = (uint64_t)(1) << logN;
|
||||||
|
|
||||||
|
/* Get some salt. */
|
||||||
|
if ((rc = getsalt(salt)) != 0)
|
||||||
|
return (rc);
|
||||||
|
|
||||||
|
/* Generate the derived keys. */
|
||||||
|
if (crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
|
||||||
|
return (3);
|
||||||
|
|
||||||
|
/* Construct the file header. */
|
||||||
|
memcpy(header, "scrypt", 6);
|
||||||
|
header[6] = 0;
|
||||||
|
header[7] = logN;
|
||||||
|
be32enc(&header[8], r);
|
||||||
|
be32enc(&header[12], p);
|
||||||
|
memcpy(&header[16], salt, 32);
|
||||||
|
|
||||||
|
/* Add header checksum. */
|
||||||
|
SHA256_Init(&ctx);
|
||||||
|
SHA256_Update(&ctx, header, 48);
|
||||||
|
SHA256_Final(hbuf, &ctx);
|
||||||
|
memcpy(&header[48], hbuf, 16);
|
||||||
|
|
||||||
|
/* Add header signature (used for verifying password). */
|
||||||
|
HMAC_SHA256_Init(&hctx, key_hmac, 32);
|
||||||
|
HMAC_SHA256_Update(&hctx, header, 64);
|
||||||
|
HMAC_SHA256_Final(hbuf, &hctx);
|
||||||
|
memcpy(&header[64], hbuf, 32);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scryptdec_setup(const uint8_t header[96], uint8_t dk[64],
|
||||||
|
const uint8_t * passwd, size_t passwdlen,
|
||||||
|
size_t maxmem, double maxmemfrac, double maxtime)
|
||||||
|
{
|
||||||
|
uint8_t salt[32];
|
||||||
|
uint8_t hbuf[32];
|
||||||
|
int logN;
|
||||||
|
uint32_t r;
|
||||||
|
uint32_t p;
|
||||||
|
uint64_t N;
|
||||||
|
SHA256_CTX ctx;
|
||||||
|
uint8_t * key_hmac = &dk[32];
|
||||||
|
HMAC_SHA256_CTX hctx;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* Parse N, r, p, salt. */
|
||||||
|
logN = header[7];
|
||||||
|
r = be32dec(&header[8]);
|
||||||
|
p = be32dec(&header[12]);
|
||||||
|
memcpy(salt, &header[16], 32);
|
||||||
|
|
||||||
|
/* Verify header checksum. */
|
||||||
|
SHA256_Init(&ctx);
|
||||||
|
SHA256_Update(&ctx, header, 48);
|
||||||
|
SHA256_Final(hbuf, &ctx);
|
||||||
|
if (memcmp(&header[48], hbuf, 16))
|
||||||
|
return (7);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check whether the provided parameters are valid and whether the
|
||||||
|
* key derivation function can be computed within the allowed memory
|
||||||
|
* and CPU time.
|
||||||
|
*/
|
||||||
|
if ((rc = checkparams(maxmem, maxmemfrac, maxtime, logN, r, p)) != 0)
|
||||||
|
return (rc);
|
||||||
|
|
||||||
|
/* Compute the derived keys. */
|
||||||
|
N = (uint64_t)(1) << logN;
|
||||||
|
if (crypto_scrypt(passwd, passwdlen, salt, 32, N, r, p, dk, 64))
|
||||||
|
return (3);
|
||||||
|
|
||||||
|
/* Check header signature (i.e., verify password). */
|
||||||
|
HMAC_SHA256_Init(&hctx, key_hmac, 32);
|
||||||
|
HMAC_SHA256_Update(&hctx, header, 64);
|
||||||
|
HMAC_SHA256_Final(hbuf, &hctx);
|
||||||
|
if (memcmp(hbuf, &header[64], 32))
|
||||||
|
return (11);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptenc_buf(inbuf, inbuflen, outbuf, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Encrypt inbuflen bytes from inbuf, writing the resulting inbuflen + 128
|
||||||
|
* bytes to outbuf.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
scryptenc_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
|
||||||
|
const uint8_t * passwd, size_t passwdlen,
|
||||||
|
size_t maxmem, double maxmemfrac, double maxtime)
|
||||||
|
{
|
||||||
|
uint8_t dk[64];
|
||||||
|
uint8_t hbuf[32];
|
||||||
|
uint8_t header[96];
|
||||||
|
uint8_t * key_enc = dk;
|
||||||
|
uint8_t * key_hmac = &dk[32];
|
||||||
|
int rc;
|
||||||
|
HMAC_SHA256_CTX hctx;
|
||||||
|
AES_KEY key_enc_exp;
|
||||||
|
struct crypto_aesctr * AES;
|
||||||
|
|
||||||
|
/* Generate the header and derived key. */
|
||||||
|
if ((rc = scryptenc_setup(header, dk, passwd, passwdlen,
|
||||||
|
maxmem, maxmemfrac, maxtime)) != 0)
|
||||||
|
return (rc);
|
||||||
|
|
||||||
|
/* Copy header into output buffer. */
|
||||||
|
memcpy(outbuf, header, 96);
|
||||||
|
|
||||||
|
/* Encrypt data. */
|
||||||
|
if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
|
||||||
|
return (5);
|
||||||
|
if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
|
||||||
|
return (6);
|
||||||
|
crypto_aesctr_stream(AES, inbuf, &outbuf[96], inbuflen);
|
||||||
|
crypto_aesctr_free(AES);
|
||||||
|
|
||||||
|
/* Add signature. */
|
||||||
|
HMAC_SHA256_Init(&hctx, key_hmac, 32);
|
||||||
|
HMAC_SHA256_Update(&hctx, outbuf, 96 + inbuflen);
|
||||||
|
HMAC_SHA256_Final(hbuf, &hctx);
|
||||||
|
memcpy(&outbuf[96 + inbuflen], hbuf, 32);
|
||||||
|
|
||||||
|
/* Zero sensitive data. */
|
||||||
|
memset(dk, 0, 64);
|
||||||
|
memset(&key_enc_exp, 0, sizeof(AES_KEY));
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptdec_buf(inbuf, inbuflen, outbuf, outlen, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Decrypt inbuflen bytes fro inbuf, writing the result into outbuf and the
|
||||||
|
* decrypted data length to outlen. The allocated length of outbuf must
|
||||||
|
* be at least inbuflen.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
scryptdec_buf(const uint8_t * inbuf, size_t inbuflen, uint8_t * outbuf,
|
||||||
|
size_t * outlen, const uint8_t * passwd, size_t passwdlen,
|
||||||
|
size_t maxmem, double maxmemfrac, double maxtime)
|
||||||
|
{
|
||||||
|
uint8_t hbuf[32];
|
||||||
|
uint8_t dk[64];
|
||||||
|
uint8_t * key_enc = dk;
|
||||||
|
uint8_t * key_hmac = &dk[32];
|
||||||
|
int rc;
|
||||||
|
HMAC_SHA256_CTX hctx;
|
||||||
|
AES_KEY key_enc_exp;
|
||||||
|
struct crypto_aesctr * AES;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All versions of the scrypt format will start with "scrypt" and
|
||||||
|
* have at least 7 bytes of header.
|
||||||
|
*/
|
||||||
|
if ((inbuflen < 7) || (memcmp(inbuf, "scrypt", 6) != 0))
|
||||||
|
return (7);
|
||||||
|
|
||||||
|
/* Check the format. */
|
||||||
|
if (inbuf[6] != 0)
|
||||||
|
return (8);
|
||||||
|
|
||||||
|
/* We must have at least 128 bytes. */
|
||||||
|
if (inbuflen < 128)
|
||||||
|
return (7);
|
||||||
|
|
||||||
|
/* Parse the header and generate derived keys. */
|
||||||
|
if ((rc = scryptdec_setup(inbuf, dk, passwd, passwdlen,
|
||||||
|
maxmem, maxmemfrac, maxtime)) != 0)
|
||||||
|
return (rc);
|
||||||
|
|
||||||
|
/* Decrypt data. */
|
||||||
|
if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
|
||||||
|
return (5);
|
||||||
|
if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
|
||||||
|
return (6);
|
||||||
|
crypto_aesctr_stream(AES, &inbuf[96], outbuf, inbuflen - 128);
|
||||||
|
crypto_aesctr_free(AES);
|
||||||
|
*outlen = inbuflen - 128;
|
||||||
|
|
||||||
|
/* Verify signature. */
|
||||||
|
HMAC_SHA256_Init(&hctx, key_hmac, 32);
|
||||||
|
HMAC_SHA256_Update(&hctx, inbuf, inbuflen - 32);
|
||||||
|
HMAC_SHA256_Final(hbuf, &hctx);
|
||||||
|
if (memcmp(hbuf, &inbuf[inbuflen - 32], 32))
|
||||||
|
return (7);
|
||||||
|
|
||||||
|
/* Zero sensitive data. */
|
||||||
|
memset(dk, 0, 64);
|
||||||
|
memset(&key_enc_exp, 0, sizeof(AES_KEY));
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptenc_file(infile, outfile, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Read a stream from infile and encrypt it, writing the resulting stream to
|
||||||
|
* outfile.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
scryptenc_file(FILE * infile, FILE * outfile,
|
||||||
|
const uint8_t * passwd, size_t passwdlen,
|
||||||
|
size_t maxmem, double maxmemfrac, double maxtime)
|
||||||
|
{
|
||||||
|
uint8_t buf[ENCBLOCK];
|
||||||
|
uint8_t dk[64];
|
||||||
|
uint8_t hbuf[32];
|
||||||
|
uint8_t header[96];
|
||||||
|
uint8_t * key_enc = dk;
|
||||||
|
uint8_t * key_hmac = &dk[32];
|
||||||
|
size_t readlen;
|
||||||
|
HMAC_SHA256_CTX hctx;
|
||||||
|
AES_KEY key_enc_exp;
|
||||||
|
struct crypto_aesctr * AES;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* Generate the header and derived key. */
|
||||||
|
if ((rc = scryptenc_setup(header, dk, passwd, passwdlen,
|
||||||
|
maxmem, maxmemfrac, maxtime)) != 0)
|
||||||
|
return (rc);
|
||||||
|
|
||||||
|
/* Hash and write the header. */
|
||||||
|
HMAC_SHA256_Init(&hctx, key_hmac, 32);
|
||||||
|
HMAC_SHA256_Update(&hctx, header, 96);
|
||||||
|
if (fwrite(header, 96, 1, outfile) != 1)
|
||||||
|
return (12);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read blocks of data, encrypt them, and write them out; hash the
|
||||||
|
* data as it is produced.
|
||||||
|
*/
|
||||||
|
if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
|
||||||
|
return (5);
|
||||||
|
if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
|
||||||
|
return (6);
|
||||||
|
do {
|
||||||
|
if ((readlen = fread(buf, 1, ENCBLOCK, infile)) == 0)
|
||||||
|
break;
|
||||||
|
crypto_aesctr_stream(AES, buf, buf, readlen);
|
||||||
|
HMAC_SHA256_Update(&hctx, buf, readlen);
|
||||||
|
if (fwrite(buf, 1, readlen, outfile) < readlen)
|
||||||
|
return (12);
|
||||||
|
} while (1);
|
||||||
|
crypto_aesctr_free(AES);
|
||||||
|
|
||||||
|
/* Did we exit the loop due to a read error? */
|
||||||
|
if (ferror(infile))
|
||||||
|
return (13);
|
||||||
|
|
||||||
|
/* Compute the final HMAC and output it. */
|
||||||
|
HMAC_SHA256_Final(hbuf, &hctx);
|
||||||
|
if (fwrite(hbuf, 32, 1, outfile) != 1)
|
||||||
|
return (12);
|
||||||
|
|
||||||
|
/* Zero sensitive data. */
|
||||||
|
memset(dk, 0, 64);
|
||||||
|
memset(&key_enc_exp, 0, sizeof(AES_KEY));
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptdec_file(infile, outfile, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Read a stream from infile and decrypt it, writing the resulting stream to
|
||||||
|
* outfile.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
scryptdec_file(FILE * infile, FILE * outfile,
|
||||||
|
const uint8_t * passwd, size_t passwdlen,
|
||||||
|
size_t maxmem, double maxmemfrac, double maxtime)
|
||||||
|
{
|
||||||
|
uint8_t buf[ENCBLOCK + 32];
|
||||||
|
uint8_t header[96];
|
||||||
|
uint8_t hbuf[32];
|
||||||
|
uint8_t dk[64];
|
||||||
|
uint8_t * key_enc = dk;
|
||||||
|
uint8_t * key_hmac = &dk[32];
|
||||||
|
size_t buflen = 0;
|
||||||
|
size_t readlen;
|
||||||
|
HMAC_SHA256_CTX hctx;
|
||||||
|
AES_KEY key_enc_exp;
|
||||||
|
struct crypto_aesctr * AES;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read the first 7 bytes of the file; all future version of scrypt
|
||||||
|
* are guaranteed to have at least 7 bytes of header.
|
||||||
|
*/
|
||||||
|
if (fread(header, 7, 1, infile) < 1) {
|
||||||
|
if (ferror(infile))
|
||||||
|
return (13);
|
||||||
|
else
|
||||||
|
return (7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Do we have the right magic? */
|
||||||
|
if (memcmp(header, "scrypt", 6))
|
||||||
|
return (7);
|
||||||
|
if (header[6] != 0)
|
||||||
|
return (8);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read another 89 bytes of the file; version 0 of the srypt file
|
||||||
|
* format has a 96-byte header.
|
||||||
|
*/
|
||||||
|
if (fread(&header[7], 89, 1, infile) < 1) {
|
||||||
|
if (ferror(infile))
|
||||||
|
return (13);
|
||||||
|
else
|
||||||
|
return (7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Parse the header and generate derived keys. */
|
||||||
|
if ((rc = scryptdec_setup(header, dk, passwd, passwdlen,
|
||||||
|
maxmem, maxmemfrac, maxtime)) != 0)
|
||||||
|
return (rc);
|
||||||
|
|
||||||
|
/* Start hashing with the header. */
|
||||||
|
HMAC_SHA256_Init(&hctx, key_hmac, 32);
|
||||||
|
HMAC_SHA256_Update(&hctx, header, 96);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We don't know how long the encrypted data block is (we can't know,
|
||||||
|
* since data can be streamed into 'scrypt enc') so we need to read
|
||||||
|
* data and decrypt all of it except the final 32 bytes, then check
|
||||||
|
* if that final 32 bytes is the correct signature.
|
||||||
|
*/
|
||||||
|
if (AES_set_encrypt_key(key_enc, 256, &key_enc_exp))
|
||||||
|
return (5);
|
||||||
|
if ((AES = crypto_aesctr_init(&key_enc_exp, 0)) == NULL)
|
||||||
|
return (6);
|
||||||
|
do {
|
||||||
|
/* Read data until we have more than 32 bytes of it. */
|
||||||
|
if ((readlen = fread(&buf[buflen], 1,
|
||||||
|
ENCBLOCK + 32 - buflen, infile)) == 0)
|
||||||
|
break;
|
||||||
|
buflen += readlen;
|
||||||
|
if (buflen <= 32)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Decrypt, hash, and output everything except the last 32
|
||||||
|
* bytes out of what we have in our buffer.
|
||||||
|
*/
|
||||||
|
HMAC_SHA256_Update(&hctx, buf, buflen - 32);
|
||||||
|
crypto_aesctr_stream(AES, buf, buf, buflen - 32);
|
||||||
|
if (fwrite(buf, 1, buflen - 32, outfile) < buflen - 32)
|
||||||
|
return (12);
|
||||||
|
|
||||||
|
/* Move the last 32 bytes to the start of the buffer. */
|
||||||
|
memmove(buf, &buf[buflen - 32], 32);
|
||||||
|
buflen = 32;
|
||||||
|
} while (1);
|
||||||
|
crypto_aesctr_free(AES);
|
||||||
|
|
||||||
|
/* Did we exit the loop due to a read error? */
|
||||||
|
if (ferror(infile))
|
||||||
|
return (13);
|
||||||
|
|
||||||
|
/* Did we read enough data that we *might* have a valid signature? */
|
||||||
|
if (buflen < 32)
|
||||||
|
return (7);
|
||||||
|
|
||||||
|
/* Verify signature. */
|
||||||
|
HMAC_SHA256_Final(hbuf, &hctx);
|
||||||
|
if (memcmp(hbuf, buf, 32))
|
||||||
|
return (7);
|
||||||
|
|
||||||
|
/* Zero sensitive data. */
|
||||||
|
memset(dk, 0, 64);
|
||||||
|
memset(&key_enc_exp, 0, sizeof(AES_KEY));
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
112
libpcp/scrypt/scryptenc/scryptenc.h
Normal file
112
libpcp/scrypt/scryptenc/scryptenc.h
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
/*-
|
||||||
|
* 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 _SCRYPTENC_H_
|
||||||
|
#define _SCRYPTENC_H_
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The parameters maxmem, maxmemfrac, and maxtime used by all of these
|
||||||
|
* functions are defined as follows:
|
||||||
|
* maxmem - maximum number of bytes of storage to use for V array (which is
|
||||||
|
* by far the largest consumer of memory). If this value is set to 0, no
|
||||||
|
* maximum will be enforced; any other value less than 1 MiB will be
|
||||||
|
* treated as 1 MiB.
|
||||||
|
* maxmemfrac - maximum fraction of available storage to use for the V array,
|
||||||
|
* where "available storage" is defined as the minimum out of the
|
||||||
|
* RLIMIT_AS, RLIMIT_DATA. and RLIMIT_RSS resource limits (if any are
|
||||||
|
* set). If this value is set to 0 or more than 0.5 it will be treated
|
||||||
|
* as 0.5; and this value will never cause a limit of less than 1 MiB to
|
||||||
|
* be enforced.
|
||||||
|
* maxtime - maximum amount of CPU time to spend computing the derived keys,
|
||||||
|
* in seconds. This limit is only approximately enforced; the CPU
|
||||||
|
* performance is estimated and parameter limits are chosen accordingly.
|
||||||
|
* For the encryption functions, the parameters to the scrypt key derivation
|
||||||
|
* function are chosen to make the key as strong as possible subject to the
|
||||||
|
* specified limits; for the decryption functions, the parameters used are
|
||||||
|
* compared to the computed limits and an error is returned if decrypting
|
||||||
|
* the data would take too much memory or CPU time.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptenc_buf(inbuf, inbuflen, outbuf, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Encrypt inbuflen bytes from inbuf, writing the resulting inbuflen + 128
|
||||||
|
* bytes to outbuf.
|
||||||
|
*/
|
||||||
|
int scryptenc_buf(const uint8_t *, size_t, uint8_t *,
|
||||||
|
const uint8_t *, size_t, size_t, double, double);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptdec_buf(inbuf, inbuflen, outbuf, outlen, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Decrypt inbuflen bytes from inbuf, writing the result into outbuf and the
|
||||||
|
* decrypted data length to outlen. The allocated length of outbuf must
|
||||||
|
* be at least inbuflen.
|
||||||
|
*/
|
||||||
|
int scryptdec_buf(const uint8_t *, size_t, uint8_t *, size_t *,
|
||||||
|
const uint8_t *, size_t, size_t, double, double);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptenc_file(infile, outfile, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Read a stream from infile and encrypt it, writing the resulting stream to
|
||||||
|
* outfile.
|
||||||
|
*/
|
||||||
|
int scryptenc_file(FILE *, FILE *, const uint8_t *, size_t,
|
||||||
|
size_t, double, double);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptdec_file(infile, outfile, passwd, passwdlen,
|
||||||
|
* maxmem, maxmemfrac, maxtime):
|
||||||
|
* Read a stream from infile and decrypt it, writing the resulting stream to
|
||||||
|
* outfile.
|
||||||
|
*/
|
||||||
|
int scryptdec_file(FILE *, FILE *, const uint8_t *, size_t,
|
||||||
|
size_t, double, double);
|
||||||
|
|
||||||
|
#endif /* !_SCRYPTENC_H_ */
|
||||||
185
libpcp/scrypt/scryptenc/scryptenc_cpuperf.c
Normal file
185
libpcp/scrypt/scryptenc/scryptenc_cpuperf.c
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include "crypto_scrypt.h"
|
||||||
|
|
||||||
|
#include "scryptenc_cpuperf.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_CLOCK_GETTIME
|
||||||
|
|
||||||
|
static clock_t clocktouse;
|
||||||
|
|
||||||
|
static int
|
||||||
|
getclockres(double * resd)
|
||||||
|
{
|
||||||
|
struct timespec res;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Try clocks in order of preference until we find one which works.
|
||||||
|
* (We assume that if clock_getres works, clock_gettime will, too.)
|
||||||
|
* The use of if/else/if/else/if/else rather than if/elif/elif/else
|
||||||
|
* is ugly but legal, and allows us to #ifdef things appropriately.
|
||||||
|
*/
|
||||||
|
#ifdef CLOCK_VIRTUAL
|
||||||
|
if (clock_getres(CLOCK_VIRTUAL, &res) == 0)
|
||||||
|
clocktouse = CLOCK_VIRTUAL;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
#ifdef CLOCK_MONOTONIC
|
||||||
|
if (clock_getres(CLOCK_MONOTONIC, &res) == 0)
|
||||||
|
clocktouse = CLOCK_MONOTONIC;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
if (clock_getres(CLOCK_REALTIME, &res) == 0)
|
||||||
|
clocktouse = CLOCK_REALTIME;
|
||||||
|
else
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
/* Convert clock resolution to a double. */
|
||||||
|
*resd = res.tv_sec + res.tv_nsec * 0.000000001;
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
getclocktime(struct timespec * ts)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (clock_gettime(clocktouse, ts))
|
||||||
|
return (-1);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
static int
|
||||||
|
getclockres(double * resd)
|
||||||
|
{
|
||||||
|
|
||||||
|
*resd = 1.0 / CLOCKS_PER_SEC;
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
getclocktime(struct timespec * ts)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
if (gettimeofday(&tv, NULL))
|
||||||
|
return (-1);
|
||||||
|
ts->tv_sec = tv.tv_sec;
|
||||||
|
ts->tv_nsec = tv.tv_usec * 1000;
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int
|
||||||
|
getclockdiff(struct timespec * st, double * diffd)
|
||||||
|
{
|
||||||
|
struct timespec en;
|
||||||
|
|
||||||
|
if (getclocktime(&en))
|
||||||
|
return (1);
|
||||||
|
*diffd = (en.tv_nsec - st->tv_nsec) * 0.000000001 +
|
||||||
|
(en.tv_sec - st->tv_sec);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptenc_cpuperf(opps):
|
||||||
|
* Estimate the number of salsa20/8 cores which can be executed per second,
|
||||||
|
* and return the value via opps.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
scryptenc_cpuperf(double * opps)
|
||||||
|
{
|
||||||
|
struct timespec st;
|
||||||
|
double resd, diffd;
|
||||||
|
uint64_t i = 0;
|
||||||
|
|
||||||
|
/* Get the clock resolution. */
|
||||||
|
if (getclockres(&resd))
|
||||||
|
return (2);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "Clock resolution is %f\n", resd);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Loop until the clock ticks. */
|
||||||
|
if (getclocktime(&st))
|
||||||
|
return (2);
|
||||||
|
do {
|
||||||
|
/* Do an scrypt. */
|
||||||
|
if (crypto_scrypt(NULL, 0, NULL, 0, 16, 1, 1, NULL, 0))
|
||||||
|
return (3);
|
||||||
|
|
||||||
|
/* Has the clock ticked? */
|
||||||
|
if (getclockdiff(&st, &diffd))
|
||||||
|
return (2);
|
||||||
|
if (diffd > 0)
|
||||||
|
break;
|
||||||
|
} while (1);
|
||||||
|
|
||||||
|
/* Could how many scryps we can do before the next tick. */
|
||||||
|
if (getclocktime(&st))
|
||||||
|
return (2);
|
||||||
|
do {
|
||||||
|
/* Do an scrypt. */
|
||||||
|
if (crypto_scrypt(NULL, 0, NULL, 0, 128, 1, 1, NULL, 0))
|
||||||
|
return (3);
|
||||||
|
|
||||||
|
/* We invoked the salsa20/8 core 512 times. */
|
||||||
|
i += 512;
|
||||||
|
|
||||||
|
/* Check if we have looped for long enough. */
|
||||||
|
if (getclockdiff(&st, &diffd))
|
||||||
|
return (2);
|
||||||
|
if (diffd > resd)
|
||||||
|
break;
|
||||||
|
} while (1);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "%ju salsa20/8 cores performed in %f seconds\n",
|
||||||
|
(uintmax_t)i, diffd);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* We can do approximately i salsa20/8 cores per diffd seconds. */
|
||||||
|
*opps = i / diffd;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
39
libpcp/scrypt/scryptenc/scryptenc_cpuperf.h
Normal file
39
libpcp/scrypt/scryptenc/scryptenc_cpuperf.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/*-
|
||||||
|
* 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 _SCRYPTENC_CPUPERF_H_
|
||||||
|
#define _SCRYPTENC_CPUPERF_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
* scryptenc_cpuperf(opps):
|
||||||
|
* Estimate the number of salsa20/8 cores which can be executed per second,
|
||||||
|
* and return the value via opps.
|
||||||
|
*/
|
||||||
|
int scryptenc_cpuperf(double *);
|
||||||
|
|
||||||
|
#endif /* !_SCRYPTENC_CPUPERF_H_ */
|
||||||
302
libpcp/scrypt/util/memlimit.c
Normal file
302
libpcp/scrypt/util/memlimit.c
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_PARAM_H
|
||||||
|
#include <sys/param.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYSCTL_HW_USERMEM
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SYSINFO_H
|
||||||
|
#include <sys/sysinfo.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "memlimit.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_SYSCTL_HW_USERMEM
|
||||||
|
static int
|
||||||
|
memlimit_sysctl_hw_usermem(size_t * memlimit)
|
||||||
|
{
|
||||||
|
int mib[2];
|
||||||
|
uint8_t usermembuf[8];
|
||||||
|
size_t usermemlen = 8;
|
||||||
|
uint64_t usermem;
|
||||||
|
|
||||||
|
/* Ask the kernel how much RAM we have. */
|
||||||
|
mib[0] = CTL_HW;
|
||||||
|
mib[1] = HW_USERMEM;
|
||||||
|
if (sysctl(mib, 2, usermembuf, &usermemlen, NULL, 0))
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parse as either a uint64_t or a uint32_t based on the length of
|
||||||
|
* output the kernel reports having copied out. It appears that all
|
||||||
|
* systems providing a sysctl interface for reading integers copy
|
||||||
|
* them out as system-endian values, so we don't need to worry about
|
||||||
|
* parsing them.
|
||||||
|
*/
|
||||||
|
if (usermemlen == sizeof(uint64_t))
|
||||||
|
usermem = *(uint64_t *)usermembuf;
|
||||||
|
else if (usermemlen == sizeof(uint32_t))
|
||||||
|
usermem = *(uint32_t *)usermembuf;
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
/* Return the sysctl value, but clamp to SIZE_MAX if necessary. */
|
||||||
|
#if UINT64_MAX > SIZE_MAX
|
||||||
|
if (usermem > SIZE_MAX)
|
||||||
|
*memlimit = SIZE_MAX;
|
||||||
|
else
|
||||||
|
*memlimit = usermem;
|
||||||
|
#else
|
||||||
|
*memlimit = usermem;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If we don't HAVE_STRUCT_SYSINFO, we can't use sysinfo. */
|
||||||
|
#ifndef HAVE_STRUCT_SYSINFO
|
||||||
|
#undef HAVE_SYSINFO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If we don't HAVE_STRUCT_SYSINFO_TOTALRAM, we can't use sysinfo. */
|
||||||
|
#ifndef HAVE_STRUCT_SYSINFO_TOTALRAM
|
||||||
|
#undef HAVE_SYSINFO
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_SYSINFO
|
||||||
|
static int
|
||||||
|
memlimit_sysinfo(size_t * memlimit)
|
||||||
|
{
|
||||||
|
struct sysinfo info;
|
||||||
|
uint64_t totalmem;
|
||||||
|
|
||||||
|
/* Get information from the kernel. */
|
||||||
|
if (sysinfo(&info))
|
||||||
|
return (1);
|
||||||
|
totalmem = info.totalram;
|
||||||
|
|
||||||
|
/* If we're on a modern kernel, adjust based on mem_unit. */
|
||||||
|
#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
|
||||||
|
totalmem = totalmem * info.mem_unit;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Return the value, but clamp to SIZE_MAX if necessary. */
|
||||||
|
#if UINT64_MAX > SIZE_MAX
|
||||||
|
if (totalmem > SIZE_MAX)
|
||||||
|
*memlimit = SIZE_MAX;
|
||||||
|
else
|
||||||
|
*memlimit = totalmem;
|
||||||
|
#else
|
||||||
|
*memlimit = totalmem;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
#endif /* HAVE_SYSINFO */
|
||||||
|
|
||||||
|
static int
|
||||||
|
memlimit_rlimit(size_t * memlimit)
|
||||||
|
{
|
||||||
|
struct rlimit rl;
|
||||||
|
uint64_t memrlimit;
|
||||||
|
|
||||||
|
/* Find the least of... */
|
||||||
|
memrlimit = (uint64_t)(-1);
|
||||||
|
|
||||||
|
/* ... RLIMIT_AS... */
|
||||||
|
#ifdef RLIMIT_AS
|
||||||
|
if (getrlimit(RLIMIT_AS, &rl))
|
||||||
|
return (1);
|
||||||
|
if ((rl.rlim_cur != RLIM_INFINITY) &&
|
||||||
|
((uint64_t)rl.rlim_cur < memrlimit))
|
||||||
|
memrlimit = rl.rlim_cur;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ... RLIMIT_DATA... */
|
||||||
|
if (getrlimit(RLIMIT_DATA, &rl))
|
||||||
|
return (1);
|
||||||
|
if ((rl.rlim_cur != RLIM_INFINITY) &&
|
||||||
|
((uint64_t)rl.rlim_cur < memrlimit))
|
||||||
|
memrlimit = rl.rlim_cur;
|
||||||
|
|
||||||
|
/* ... and RLIMIT_RSS. */
|
||||||
|
#ifdef RLIMIT_RSS
|
||||||
|
if (getrlimit(RLIMIT_RSS, &rl))
|
||||||
|
return (1);
|
||||||
|
if ((rl.rlim_cur != RLIM_INFINITY) &&
|
||||||
|
((uint64_t)rl.rlim_cur < memrlimit))
|
||||||
|
memrlimit = rl.rlim_cur;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Return the value, but clamp to SIZE_MAX if necessary. */
|
||||||
|
#if UINT64_MAX > SIZE_MAX
|
||||||
|
if (memrlimit > SIZE_MAX)
|
||||||
|
*memlimit = SIZE_MAX;
|
||||||
|
else
|
||||||
|
*memlimit = memrlimit;
|
||||||
|
#else
|
||||||
|
*memlimit = memrlimit;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _SC_PHYS_PAGES
|
||||||
|
|
||||||
|
/* Some systems define _SC_PAGESIZE instead of _SC_PAGE_SIZE. */
|
||||||
|
#ifndef _SC_PAGE_SIZE
|
||||||
|
#define _SC_PAGE_SIZE _SC_PAGESIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int
|
||||||
|
memlimit_sysconf(size_t * memlimit)
|
||||||
|
{
|
||||||
|
long pagesize;
|
||||||
|
long physpages;
|
||||||
|
uint64_t totalmem;
|
||||||
|
|
||||||
|
/* Set errno to 0 in order to distinguish "no limit" from "error". */
|
||||||
|
errno = 0;
|
||||||
|
|
||||||
|
/* Read the two limits. */
|
||||||
|
if (((pagesize = sysconf(_SC_PAGE_SIZE)) == -1) ||
|
||||||
|
((physpages = sysconf(_SC_PHYS_PAGES)) == -1)) {
|
||||||
|
/* Did an error occur? */
|
||||||
|
if (errno != 0)
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
/* If not, there is no limit. */
|
||||||
|
totalmem = (uint64_t)(-1);
|
||||||
|
} else {
|
||||||
|
/* Compute the limit. */
|
||||||
|
totalmem = (uint64_t)(pagesize) * (uint64_t)(physpages);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the value, but clamp to SIZE_MAX if necessary. */
|
||||||
|
#if UINT64_MAX > SIZE_MAX
|
||||||
|
if (totalmem > SIZE_MAX)
|
||||||
|
*memlimit = SIZE_MAX;
|
||||||
|
else
|
||||||
|
*memlimit = totalmem;
|
||||||
|
#else
|
||||||
|
*memlimit = totalmem;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
memtouse(size_t maxmem, double maxmemfrac, size_t * memlimit)
|
||||||
|
{
|
||||||
|
size_t sysctl_memlimit, sysinfo_memlimit, rlimit_memlimit;
|
||||||
|
size_t sysconf_memlimit;
|
||||||
|
size_t memlimit_min;
|
||||||
|
size_t memavail;
|
||||||
|
|
||||||
|
/* Get memory limits. */
|
||||||
|
#ifdef HAVE_SYSCTL_HW_USERMEM
|
||||||
|
if (memlimit_sysctl_hw_usermem(&sysctl_memlimit))
|
||||||
|
return (1);
|
||||||
|
#else
|
||||||
|
sysctl_memlimit = (size_t)(-1);
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYSINFO
|
||||||
|
if (memlimit_sysinfo(&sysinfo_memlimit))
|
||||||
|
return (1);
|
||||||
|
#else
|
||||||
|
sysinfo_memlimit = (size_t)(-1);
|
||||||
|
#endif
|
||||||
|
if (memlimit_rlimit(&rlimit_memlimit))
|
||||||
|
return (1);
|
||||||
|
#ifdef _SC_PHYS_PAGES
|
||||||
|
if (memlimit_sysconf(&sysconf_memlimit))
|
||||||
|
return (1);
|
||||||
|
#else
|
||||||
|
sysconf_memlimit = (size_t)(-1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "Memory limits are %zu %zu %zu %zu\n",
|
||||||
|
sysctl_memlimit, sysinfo_memlimit, rlimit_memlimit,
|
||||||
|
sysconf_memlimit);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Find the smallest of them. */
|
||||||
|
memlimit_min = (size_t)(-1);
|
||||||
|
if (memlimit_min > sysctl_memlimit)
|
||||||
|
memlimit_min = sysctl_memlimit;
|
||||||
|
if (memlimit_min > sysinfo_memlimit)
|
||||||
|
memlimit_min = sysinfo_memlimit;
|
||||||
|
if (memlimit_min > rlimit_memlimit)
|
||||||
|
memlimit_min = rlimit_memlimit;
|
||||||
|
if (memlimit_min > sysconf_memlimit)
|
||||||
|
memlimit_min = sysconf_memlimit;
|
||||||
|
|
||||||
|
/* Only use the specified fraction of the available memory. */
|
||||||
|
if ((maxmemfrac > 0.5) || (maxmemfrac == 0.0))
|
||||||
|
maxmemfrac = 0.5;
|
||||||
|
memavail = maxmemfrac * memlimit_min;
|
||||||
|
|
||||||
|
/* Don't use more than the specified maximum. */
|
||||||
|
if ((maxmem > 0) && (memavail > maxmem))
|
||||||
|
memavail = maxmem;
|
||||||
|
|
||||||
|
/* But always allow at least 1 MiB. */
|
||||||
|
if (memavail < 1048576)
|
||||||
|
memavail = 1048576;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "Allowing up to %zu memory to be used\n", memavail);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Return limit via the provided pointer. */
|
||||||
|
*memlimit = memavail;
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
42
libpcp/scrypt/util/memlimit.h
Normal file
42
libpcp/scrypt/util/memlimit.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/*-
|
||||||
|
* 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 _MEMLIMIT_H_
|
||||||
|
#define _MEMLIMIT_H_
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* memtouse(maxmem, maxmemfrac, memlimit):
|
||||||
|
* Examine the system and return via memlimit the amount of RAM which should
|
||||||
|
* be used -- the specified fraction of the available RAM, but no more than
|
||||||
|
* maxmem, and no less than 1MiB.
|
||||||
|
*/
|
||||||
|
int memtouse(size_t, double, size_t *);
|
||||||
|
|
||||||
|
#endif /* !_MEMLIMIT_H_ */
|
||||||
143
libpcp/scrypt/util/readpass.c
Normal file
143
libpcp/scrypt/util/readpass.c
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "warn.h"
|
||||||
|
|
||||||
|
#include "readpass.h"
|
||||||
|
|
||||||
|
#define MAXPASSLEN 2048
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tarsnap_getpass(passwd, prompt, confirmprompt, devtty)
|
||||||
|
* If ${devtty} is non-zero, read a password from /dev/tty if possible; if
|
||||||
|
* not, read from stdin. If reading from a tty (either /dev/tty or stdin),
|
||||||
|
* disable echo and prompt the user by printing ${prompt} to stderr. If
|
||||||
|
* ${confirmprompt} is non-NULL, read a second password (prompting if a
|
||||||
|
* terminal is being used) and repeat until the user enters the same password
|
||||||
|
* twice. Return the password as a malloced NUL-terminated string via
|
||||||
|
* ${passwd}. The obscure name is to avoid namespace collisions due to the
|
||||||
|
* getpass / readpass / readpassphrase / etc. functions in various libraries.
|
||||||
|
*/
|
||||||
|
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;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
retry:
|
||||||
|
/* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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';
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
|
||||||
|
/* Success! */
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
err2:
|
||||||
|
/* 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);
|
||||||
|
|
||||||
|
/* Failure! */
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
45
libpcp/scrypt/util/readpass.h
Normal file
45
libpcp/scrypt/util/readpass.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*-
|
||||||
|
* 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 _READPASS_H_
|
||||||
|
#define _READPASS_H_
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tarsnap_getpass(passwd, prompt, confirmprompt, devtty)
|
||||||
|
* If ${devtty} is non-zero, read a password from /dev/tty if possible; if
|
||||||
|
* not, read from stdin. If reading from a tty (either /dev/tty or stdin),
|
||||||
|
* disable echo and prompt the user by printing ${prompt} to stderr. If
|
||||||
|
* ${confirmprompt} is non-NULL, read a second password (prompting if a
|
||||||
|
* terminal is being used) and repeat until the user enters the same password
|
||||||
|
* twice. Return the password as a malloced NUL-terminated string via
|
||||||
|
* ${passwd}. The obscure name is to avoid namespace collisions due to the
|
||||||
|
* getpass / readpass / readpassphrase / etc. functions in various libraries.
|
||||||
|
*/
|
||||||
|
int tarsnap_readpass(char **, const char *, const char *, int);
|
||||||
|
|
||||||
|
#endif /* !_READPASS_H_ */
|
||||||
140
libpcp/scrypt/util/sysendian.h
Normal file
140
libpcp/scrypt/util/sysendian.h
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#ifndef _SYSENDIAN_H_
|
||||||
|
#define _SYSENDIAN_H_
|
||||||
|
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
/* If we don't have be64enc, the <sys/endian.h> we have isn't usable. */
|
||||||
|
#if !HAVE_DECL_BE64ENC
|
||||||
|
#undef HAVE_SYS_ENDIAN_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_ENDIAN_H
|
||||||
|
|
||||||
|
#include <sys/endian.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
be32dec(const void *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));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
be32enc(void *pp, uint32_t x)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
be64dec(const void *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));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
be64enc(void *pp, uint64_t x)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t
|
||||||
|
le32dec(const void *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));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
le32enc(void *pp, uint32_t x)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t
|
||||||
|
le64dec(const void *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));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
le64enc(void *pp, uint64_t x)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
#endif /* !HAVE_SYS_ENDIAN_H */
|
||||||
|
|
||||||
|
#endif /* !_SYSENDIAN_H_ */
|
||||||
75
libpcp/scrypt/util/warn.c
Normal file
75
libpcp/scrypt/util/warn.c
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
/*-
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
#include "scrypt_platform.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_ERR_H
|
||||||
|
/*
|
||||||
|
* Everything is provided through err.h and the associated library, so we
|
||||||
|
* don't need to do anything here.
|
||||||
|
*/
|
||||||
|
#else
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "warn.h"
|
||||||
|
|
||||||
|
const char * warn_progname = "(null)";
|
||||||
|
|
||||||
|
void
|
||||||
|
warn(const char * fmt, ...)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
warnx(const char * fmt, ...)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
13
libpcp/scrypt/util/warn.h
Normal file
13
libpcp/scrypt/util/warn.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#ifndef _WARN_H_
|
||||||
|
#define _WARN_H_
|
||||||
|
|
||||||
|
#ifdef HAVE_ERR_H
|
||||||
|
#include <err.h>
|
||||||
|
#else
|
||||||
|
#define NEED_WARN_PROGNAME
|
||||||
|
const char * warn_progname;
|
||||||
|
void warn(const char *, ...);
|
||||||
|
void warnx(const char *, ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_WARN_H_ */
|
||||||
132
libtool
132
libtool
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
# libtool - Provide generalized library-building support services.
|
# libtool - Provide generalized library-building support services.
|
||||||
# Generated automatically by config.status (pcp) 0.1.5
|
# Generated automatically by config.status (pcp) 0.1.5
|
||||||
# Libtool was configured on host io:
|
# Libtool was configured on host r4:
|
||||||
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
||||||
#
|
#
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||||
# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
|
# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
# Inc.
|
# Foundation, Inc.
|
||||||
# Written by Gordon Matzigkeit, 1996
|
# Written by Gordon Matzigkeit, 1996
|
||||||
#
|
#
|
||||||
# This file is part of GNU Libtool.
|
# This file is part of GNU Libtool.
|
||||||
@@ -40,8 +40,8 @@ available_tags="CXX "
|
|||||||
# ### BEGIN LIBTOOL CONFIG
|
# ### BEGIN LIBTOOL CONFIG
|
||||||
|
|
||||||
# Which release of libtool.m4 was used?
|
# Which release of libtool.m4 was used?
|
||||||
macro_version=2.4
|
macro_version=2.4.2
|
||||||
macro_revision=1.3293
|
macro_revision=1.3337
|
||||||
|
|
||||||
# Whether or not to build shared libraries.
|
# Whether or not to build shared libraries.
|
||||||
build_libtool_libs=yes
|
build_libtool_libs=yes
|
||||||
@@ -61,15 +61,18 @@ SHELL="/bin/sh"
|
|||||||
# An echo program that protects backslashes.
|
# An echo program that protects backslashes.
|
||||||
ECHO="printf %s\\n"
|
ECHO="printf %s\\n"
|
||||||
|
|
||||||
|
# The PATH separator for the build system.
|
||||||
|
PATH_SEPARATOR=":"
|
||||||
|
|
||||||
# The host system.
|
# The host system.
|
||||||
host_alias=
|
host_alias=
|
||||||
host=amd64-unknown-freebsd9.0
|
host=amd64-unknown-freebsd9.1
|
||||||
host_os=freebsd9.0
|
host_os=freebsd9.1
|
||||||
|
|
||||||
# The build system.
|
# The build system.
|
||||||
build_alias=
|
build_alias=
|
||||||
build=amd64-unknown-freebsd9.0
|
build=amd64-unknown-freebsd9.1
|
||||||
build_os=freebsd9.0
|
build_os=freebsd9.1
|
||||||
|
|
||||||
# A sed program that does not truncate output.
|
# A sed program that does not truncate output.
|
||||||
SED="/usr/bin/sed"
|
SED="/usr/bin/sed"
|
||||||
@@ -151,7 +154,7 @@ STRIP="strip"
|
|||||||
|
|
||||||
# Commands used to install an old-style archive.
|
# Commands used to install an old-style archive.
|
||||||
RANLIB="ranlib"
|
RANLIB="ranlib"
|
||||||
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
|
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib"
|
||||||
old_postuninstall_cmds=""
|
old_postuninstall_cmds=""
|
||||||
|
|
||||||
# Whether to use a lock for old archive extraction.
|
# Whether to use a lock for old archive extraction.
|
||||||
@@ -161,7 +164,7 @@ lock_old_archive_extraction=no
|
|||||||
LTCC="gcc"
|
LTCC="gcc"
|
||||||
|
|
||||||
# LTCC compiler flags.
|
# LTCC compiler flags.
|
||||||
LTCFLAGS="-I/usr/local/include -I/usr/local/include"
|
LTCFLAGS="-g -O2 -I/usr/local/include"
|
||||||
|
|
||||||
# Take the output of nm and produce a listing of raw symbols and C names.
|
# Take the output of nm and produce a listing of raw symbols and C names.
|
||||||
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
|
global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'"
|
||||||
@@ -296,7 +299,7 @@ reload_flag=" -r"
|
|||||||
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
|
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
|
||||||
|
|
||||||
# Commands used to build an old-style archive.
|
# Commands used to build an old-style archive.
|
||||||
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
|
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
|
||||||
|
|
||||||
# A language specific compiler.
|
# A language specific compiler.
|
||||||
CC="gcc"
|
CC="gcc"
|
||||||
@@ -362,10 +365,6 @@ no_undefined_flag=""
|
|||||||
# This must work even if $libdir does not exist
|
# This must work even if $libdir does not exist
|
||||||
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
|
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
|
||||||
|
|
||||||
# If ld is used when linking, flag to hardcode $libdir into a binary
|
|
||||||
# during linking. This must work even if $libdir does not exist.
|
|
||||||
hardcode_libdir_flag_spec_ld=""
|
|
||||||
|
|
||||||
# Whether we need a single "-rpath" flag with a separated argument.
|
# Whether we need a single "-rpath" flag with a separated argument.
|
||||||
hardcode_libdir_separator=""
|
hardcode_libdir_separator=""
|
||||||
|
|
||||||
@@ -440,11 +439,11 @@ compiler_lib_search_path=""
|
|||||||
# ### END LIBTOOL CONFIG
|
# ### END LIBTOOL CONFIG
|
||||||
|
|
||||||
|
|
||||||
# libtool (GNU libtool) 2.4
|
# libtool (GNU libtool) 2.4.2
|
||||||
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
||||||
# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||||
# This is free software; see the source for copying conditions. There is NO
|
# This is free software; see the source for copying conditions. There is NO
|
||||||
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
@@ -482,6 +481,7 @@ compiler_lib_search_path=""
|
|||||||
# --quiet, --silent don't print informational messages
|
# --quiet, --silent don't print informational messages
|
||||||
# --no-quiet, --no-silent
|
# --no-quiet, --no-silent
|
||||||
# print informational messages (default)
|
# print informational messages (default)
|
||||||
|
# --no-warn don't display warning messages
|
||||||
# --tag=TAG use configuration variables from tag TAG
|
# --tag=TAG use configuration variables from tag TAG
|
||||||
# -v, --verbose print more informational messages than default
|
# -v, --verbose print more informational messages than default
|
||||||
# --no-verbose don't print the extra informational messages
|
# --no-verbose don't print the extra informational messages
|
||||||
@@ -510,7 +510,7 @@ compiler_lib_search_path=""
|
|||||||
# compiler: $LTCC
|
# compiler: $LTCC
|
||||||
# compiler flags: $LTCFLAGS
|
# compiler flags: $LTCFLAGS
|
||||||
# linker: $LD (gnu? $with_gnu_ld)
|
# linker: $LD (gnu? $with_gnu_ld)
|
||||||
# $progname: (GNU libtool) 2.4
|
# $progname: (GNU libtool) 2.4.2
|
||||||
# automake: $automake_version
|
# automake: $automake_version
|
||||||
# autoconf: $autoconf_version
|
# autoconf: $autoconf_version
|
||||||
#
|
#
|
||||||
@@ -520,9 +520,9 @@ compiler_lib_search_path=""
|
|||||||
|
|
||||||
PROGRAM=libtool
|
PROGRAM=libtool
|
||||||
PACKAGE=libtool
|
PACKAGE=libtool
|
||||||
VERSION=2.4
|
VERSION=2.4.2
|
||||||
TIMESTAMP=""
|
TIMESTAMP=""
|
||||||
package_revision=1.3293
|
package_revision=1.3337
|
||||||
|
|
||||||
# Be Bourne compatible
|
# Be Bourne compatible
|
||||||
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
||||||
@@ -577,15 +577,10 @@ progpath="$0"
|
|||||||
|
|
||||||
: ${CP="cp -f"}
|
: ${CP="cp -f"}
|
||||||
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
||||||
: ${EGREP="grep -E"}
|
|
||||||
: ${FGREP="grep -F"}
|
|
||||||
: ${GREP="grep"}
|
|
||||||
: ${LN_S="ln -s"}
|
|
||||||
: ${MAKE="make"}
|
: ${MAKE="make"}
|
||||||
: ${MKDIR="mkdir"}
|
: ${MKDIR="mkdir"}
|
||||||
: ${MV="mv -f"}
|
: ${MV="mv -f"}
|
||||||
: ${RM="rm -f"}
|
: ${RM="rm -f"}
|
||||||
: ${SED="sed"}
|
|
||||||
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
|
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
|
||||||
: ${Xsed="$SED -e 1s/^X//"}
|
: ${Xsed="$SED -e 1s/^X//"}
|
||||||
|
|
||||||
@@ -824,7 +819,7 @@ case $progpath in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
save_IFS="$IFS"
|
save_IFS="$IFS"
|
||||||
IFS=:
|
IFS=${PATH_SEPARATOR-:}
|
||||||
for progdir in $PATH; do
|
for progdir in $PATH; do
|
||||||
IFS="$save_IFS"
|
IFS="$save_IFS"
|
||||||
test -x "$progdir/$progname" && break
|
test -x "$progdir/$progname" && break
|
||||||
@@ -1208,8 +1203,8 @@ func_help ()
|
|||||||
s*\$LTCFLAGS*'"$LTCFLAGS"'*
|
s*\$LTCFLAGS*'"$LTCFLAGS"'*
|
||||||
s*\$LD*'"$LD"'*
|
s*\$LD*'"$LD"'*
|
||||||
s/\$with_gnu_ld/'"$with_gnu_ld"'/
|
s/\$with_gnu_ld/'"$with_gnu_ld"'/
|
||||||
s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
|
s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
|
||||||
s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
|
s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
|
||||||
p
|
p
|
||||||
d
|
d
|
||||||
}
|
}
|
||||||
@@ -1486,6 +1481,7 @@ opt_finish=false
|
|||||||
opt_help=false
|
opt_help=false
|
||||||
opt_help_all=false
|
opt_help_all=false
|
||||||
opt_silent=:
|
opt_silent=:
|
||||||
|
opt_warning=:
|
||||||
opt_verbose=:
|
opt_verbose=:
|
||||||
opt_silent=false
|
opt_silent=false
|
||||||
opt_verbose=false
|
opt_verbose=false
|
||||||
@@ -1552,6 +1548,10 @@ esac
|
|||||||
;;
|
;;
|
||||||
--no-silent|--no-quiet)
|
--no-silent|--no-quiet)
|
||||||
opt_silent=false
|
opt_silent=false
|
||||||
|
preserve_args="$preserve_args $opt"
|
||||||
|
;;
|
||||||
|
--no-warning|--no-warn)
|
||||||
|
opt_warning=false
|
||||||
preserve_args="$preserve_args $opt"
|
preserve_args="$preserve_args $opt"
|
||||||
;;
|
;;
|
||||||
--no-verbose)
|
--no-verbose)
|
||||||
@@ -2523,7 +2523,7 @@ func_mode_compile ()
|
|||||||
*.[cCFSifmso] | \
|
*.[cCFSifmso] | \
|
||||||
*.ada | *.adb | *.ads | *.asm | \
|
*.ada | *.adb | *.ads | *.asm | \
|
||||||
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
|
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
|
||||||
*.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
|
*.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
|
||||||
func_xform "$libobj"
|
func_xform "$libobj"
|
||||||
libobj=$func_xform_result
|
libobj=$func_xform_result
|
||||||
;;
|
;;
|
||||||
@@ -3665,11 +3665,13 @@ func_mode_install ()
|
|||||||
|
|
||||||
# Set up the ranlib parameters.
|
# Set up the ranlib parameters.
|
||||||
oldlib="$destdir/$name"
|
oldlib="$destdir/$name"
|
||||||
|
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
|
||||||
|
tool_oldlib=$func_to_tool_file_result
|
||||||
|
|
||||||
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
|
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
|
||||||
|
|
||||||
if test -n "$stripme" && test -n "$old_striplib"; then
|
if test -n "$stripme" && test -n "$old_striplib"; then
|
||||||
func_show_eval "$old_striplib $oldlib" 'exit $?'
|
func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Do each command in the postinstall commands.
|
# Do each command in the postinstall commands.
|
||||||
@@ -3934,7 +3936,7 @@ static const void *lt_preloaded_setup() {
|
|||||||
# linked before any other PIC object. But we must not use
|
# linked before any other PIC object. But we must not use
|
||||||
# pic_flag when linking with -static. The problem exists in
|
# pic_flag when linking with -static. The problem exists in
|
||||||
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
|
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
|
||||||
*-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
|
*-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
|
||||||
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
|
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
|
||||||
*-*-hpux*)
|
*-*-hpux*)
|
||||||
pic_flag_for_symtable=" $pic_flag" ;;
|
pic_flag_for_symtable=" $pic_flag" ;;
|
||||||
@@ -4449,14 +4451,17 @@ func_exec_program_core ()
|
|||||||
# launches target application with the remaining arguments.
|
# launches target application with the remaining arguments.
|
||||||
func_exec_program ()
|
func_exec_program ()
|
||||||
{
|
{
|
||||||
for lt_wr_arg
|
case \" \$* \" in
|
||||||
do
|
*\\ --lt-*)
|
||||||
case \$lt_wr_arg in
|
for lt_wr_arg
|
||||||
--lt-*) ;;
|
do
|
||||||
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
|
case \$lt_wr_arg in
|
||||||
esac
|
--lt-*) ;;
|
||||||
shift
|
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
|
||||||
done
|
esac
|
||||||
|
shift
|
||||||
|
done ;;
|
||||||
|
esac
|
||||||
func_exec_program_core \${1+\"\$@\"}
|
func_exec_program_core \${1+\"\$@\"}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5524,9 +5529,15 @@ void lt_dump_script (FILE* f)
|
|||||||
{
|
{
|
||||||
EOF
|
EOF
|
||||||
func_emit_wrapper yes |
|
func_emit_wrapper yes |
|
||||||
$SED -e 's/\([\\"]\)/\\\1/g' \
|
$SED -n -e '
|
||||||
-e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
|
s/^\(.\{79\}\)\(..*\)/\1\
|
||||||
|
\2/
|
||||||
|
h
|
||||||
|
s/\([\\"]\)/\\\1/g
|
||||||
|
s/$/\\n/
|
||||||
|
s/\([^\n]*\).*/ fputs ("\1", f);/p
|
||||||
|
g
|
||||||
|
D'
|
||||||
cat <<"EOF"
|
cat <<"EOF"
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
@@ -6111,7 +6122,8 @@ func_mode_link ()
|
|||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
|
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|
||||||
|
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
|
||||||
compiler_flags="$compiler_flags $arg"
|
compiler_flags="$compiler_flags $arg"
|
||||||
compile_command="$compile_command $arg"
|
compile_command="$compile_command $arg"
|
||||||
finalize_command="$finalize_command $arg"
|
finalize_command="$finalize_command $arg"
|
||||||
@@ -6615,7 +6627,8 @@ func_mode_link ()
|
|||||||
lib=
|
lib=
|
||||||
found=no
|
found=no
|
||||||
case $deplib in
|
case $deplib in
|
||||||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
|
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
|
||||||
|
|-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
|
||||||
if test "$linkmode,$pass" = "prog,link"; then
|
if test "$linkmode,$pass" = "prog,link"; then
|
||||||
compile_deplibs="$deplib $compile_deplibs"
|
compile_deplibs="$deplib $compile_deplibs"
|
||||||
finalize_deplibs="$deplib $finalize_deplibs"
|
finalize_deplibs="$deplib $finalize_deplibs"
|
||||||
@@ -7316,7 +7329,7 @@ func_mode_link ()
|
|||||||
test "$hardcode_direct_absolute" = no; then
|
test "$hardcode_direct_absolute" = no; then
|
||||||
add="$dir/$linklib"
|
add="$dir/$linklib"
|
||||||
elif test "$hardcode_minus_L" = yes; then
|
elif test "$hardcode_minus_L" = yes; then
|
||||||
add_dir="-L$dir"
|
add_dir="-L$absdir"
|
||||||
# Try looking first in the location we're being installed to.
|
# Try looking first in the location we're being installed to.
|
||||||
if test -n "$inst_prefix_dir"; then
|
if test -n "$inst_prefix_dir"; then
|
||||||
case $libdir in
|
case $libdir in
|
||||||
@@ -7801,6 +7814,7 @@ func_mode_link ()
|
|||||||
# which has an extra 1 added just for fun
|
# which has an extra 1 added just for fun
|
||||||
#
|
#
|
||||||
case $version_type in
|
case $version_type in
|
||||||
|
# correct linux to gnu/linux during the next big refactor
|
||||||
darwin|linux|osf|windows|none)
|
darwin|linux|osf|windows|none)
|
||||||
func_arith $number_major + $number_minor
|
func_arith $number_major + $number_minor
|
||||||
current=$func_arith_result
|
current=$func_arith_result
|
||||||
@@ -7917,7 +7931,7 @@ func_mode_link ()
|
|||||||
versuffix="$major.$revision"
|
versuffix="$major.$revision"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
linux)
|
linux) # correct to gnu/linux during the next big refactor
|
||||||
func_arith $current - $age
|
func_arith $current - $age
|
||||||
major=.$func_arith_result
|
major=.$func_arith_result
|
||||||
versuffix="$major.$age.$revision"
|
versuffix="$major.$age.$revision"
|
||||||
@@ -8505,6 +8519,11 @@ EOF
|
|||||||
|
|
||||||
# Test again, we may have decided not to build it any more
|
# Test again, we may have decided not to build it any more
|
||||||
if test "$build_libtool_libs" = yes; then
|
if test "$build_libtool_libs" = yes; then
|
||||||
|
# Remove ${wl} instances when linking with ld.
|
||||||
|
# FIXME: should test the right _cmds variable.
|
||||||
|
case $archive_cmds in
|
||||||
|
*\$LD\ *) wl= ;;
|
||||||
|
esac
|
||||||
if test "$hardcode_into_libs" = yes; then
|
if test "$hardcode_into_libs" = yes; then
|
||||||
# Hardcode the library paths
|
# Hardcode the library paths
|
||||||
hardcode_libdirs=
|
hardcode_libdirs=
|
||||||
@@ -8535,7 +8554,7 @@ EOF
|
|||||||
elif test -n "$runpath_var"; then
|
elif test -n "$runpath_var"; then
|
||||||
case "$perm_rpath " in
|
case "$perm_rpath " in
|
||||||
*" $libdir "*) ;;
|
*" $libdir "*) ;;
|
||||||
*) func_apped perm_rpath " $libdir" ;;
|
*) perm_rpath="$perm_rpath $libdir" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -8543,11 +8562,7 @@ EOF
|
|||||||
if test -n "$hardcode_libdir_separator" &&
|
if test -n "$hardcode_libdir_separator" &&
|
||||||
test -n "$hardcode_libdirs"; then
|
test -n "$hardcode_libdirs"; then
|
||||||
libdir="$hardcode_libdirs"
|
libdir="$hardcode_libdirs"
|
||||||
if test -n "$hardcode_libdir_flag_spec_ld"; then
|
eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
|
||||||
eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
|
|
||||||
else
|
|
||||||
eval dep_rpath=\"$hardcode_libdir_flag_spec\"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if test -n "$runpath_var" && test -n "$perm_rpath"; then
|
if test -n "$runpath_var" && test -n "$perm_rpath"; then
|
||||||
# We should set the runpath_var.
|
# We should set the runpath_var.
|
||||||
@@ -9637,6 +9652,8 @@ EOF
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
|
||||||
|
tool_oldlib=$func_to_tool_file_result
|
||||||
eval cmds=\"$old_archive_cmds\"
|
eval cmds=\"$old_archive_cmds\"
|
||||||
|
|
||||||
func_len " $cmds"
|
func_len " $cmds"
|
||||||
@@ -9746,7 +9763,8 @@ EOF
|
|||||||
*.la)
|
*.la)
|
||||||
func_basename "$deplib"
|
func_basename "$deplib"
|
||||||
name="$func_basename_result"
|
name="$func_basename_result"
|
||||||
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
|
func_resolve_sysroot "$deplib"
|
||||||
|
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
|
||||||
test -z "$libdir" && \
|
test -z "$libdir" && \
|
||||||
func_fatal_error "\`$deplib' is not a valid libtool archive"
|
func_fatal_error "\`$deplib' is not a valid libtool archive"
|
||||||
newdependency_libs="$newdependency_libs ${lt_sysroot:+=}$libdir/$name"
|
newdependency_libs="$newdependency_libs ${lt_sysroot:+=}$libdir/$name"
|
||||||
@@ -10130,7 +10148,7 @@ reload_flag=" -r"
|
|||||||
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
|
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
|
||||||
|
|
||||||
# Commands used to build an old-style archive.
|
# Commands used to build an old-style archive.
|
||||||
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
|
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib"
|
||||||
|
|
||||||
# A language specific compiler.
|
# A language specific compiler.
|
||||||
CC="g++"
|
CC="g++"
|
||||||
@@ -10196,10 +10214,6 @@ no_undefined_flag=""
|
|||||||
# This must work even if $libdir does not exist
|
# This must work even if $libdir does not exist
|
||||||
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
|
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
|
||||||
|
|
||||||
# If ld is used when linking, flag to hardcode $libdir into a binary
|
|
||||||
# during linking. This must work even if $libdir does not exist.
|
|
||||||
hardcode_libdir_flag_spec_ld=""
|
|
||||||
|
|
||||||
# Whether we need a single "-rpath" flag with a separated argument.
|
# Whether we need a single "-rpath" flag with a separated argument.
|
||||||
hardcode_libdir_separator=""
|
hardcode_libdir_separator=""
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
|
.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
|
||||||
.\"
|
.\"
|
||||||
.\" Standard preamble:
|
.\" Standard preamble:
|
||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
.\" ========================================================================
|
.\" ========================================================================
|
||||||
.\"
|
.\"
|
||||||
.IX Title "PCP1 1"
|
.IX Title "PCP1 1"
|
||||||
.TH PCP1 1 "2013-12-19" "PCP 0.1.5" "USER CONTRIBUTED DOCUMENTATION"
|
.TH PCP1 1 "2014-01-16" "PCP 0.1.5" "USER CONTRIBUTED DOCUMENTATION"
|
||||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||||
.\" way too many mistakes in technical documents.
|
.\" way too many mistakes in technical documents.
|
||||||
.if n .ad l
|
.if n .ad l
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
AM_CFLAGS = -I../include/pcp -Wall -g
|
AM_CFLAGS = -I../include/pcp -I../libpcp/scrypt/crypto -Wall -g
|
||||||
|
|
||||||
bin_PROGRAMS = pcp1
|
bin_PROGRAMS = pcp1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
@@ -235,7 +235,7 @@ target_alias = @target_alias@
|
|||||||
top_build_prefix = @top_build_prefix@
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AM_CFLAGS = -I../include/pcp -Wall -g
|
AM_CFLAGS = -I../include/pcp -I../libpcp/scrypt/crypto -Wall -g
|
||||||
pcp1_LDADD = ../libpcp/.libs/libpcp1.a
|
pcp1_LDADD = ../libpcp/.libs/libpcp1.a
|
||||||
pcp1_SOURCES = pcp.c keymgmt.c keyprint.c readpass.c \
|
pcp1_SOURCES = pcp.c keymgmt.c keyprint.c readpass.c \
|
||||||
encryption.c z85util.c signature.c \
|
encryption.c z85util.c signature.c \
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
# You can contact me by mail: <tlinden AT cpan DOT org>.
|
||||||
#
|
#
|
||||||
|
|
||||||
AM_CFLAGS = -I../include/pcp -I../src -Wall -g
|
AM_CFLAGS = -I../include/pcp -I../src -I../libpcp/scrypt/crypto -Wall -g
|
||||||
check_PROGRAMS = col invalidkeys pwhashes gencheader statictest cpptest
|
check_PROGRAMS = col invalidkeys pwhashes gencheader statictest cpptest
|
||||||
|
|
||||||
gencheader_LDADD = ../libpcp/.libs/libpcp1.a
|
gencheader_LDADD = ../libpcp/.libs/libpcp1.a
|
||||||
@@ -40,7 +40,7 @@ invalidkeys_SOURCES = invalidkeys.c
|
|||||||
pwhashes_LDADD = ../libpcp/.libs/libpcp1.a
|
pwhashes_LDADD = ../libpcp/.libs/libpcp1.a
|
||||||
pwhashes_SOURCES = pwhashes.c
|
pwhashes_SOURCES = pwhashes.c
|
||||||
|
|
||||||
AM_CXXFLAGS = -I../include -I../bindings/cpp -Wall -g
|
AM_CXXFLAGS = -I../include -I../bindings/cpp -I../libpcp/scrypt/crypto -Wall -g
|
||||||
cpptest_LDADD = ../bindings/cpp/.libs/libpcp1++.a ../libpcp/.libs/libpcp1.a
|
cpptest_LDADD = ../bindings/cpp/.libs/libpcp1++.a ../libpcp/.libs/libpcp1.a
|
||||||
cpptest_SOURCES = cpptest.cpp
|
cpptest_SOURCES = cpptest.cpp
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Makefile.in generated by automake 1.12.4 from Makefile.am.
|
# Makefile.in generated by automake 1.12.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
@@ -261,7 +261,7 @@ target_alias = @target_alias@
|
|||||||
top_build_prefix = @top_build_prefix@
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AM_CFLAGS = -I../include/pcp -I../src -Wall -g
|
AM_CFLAGS = -I../include/pcp -I../src -I../libpcp/scrypt/crypto -Wall -g
|
||||||
gencheader_LDADD = ../libpcp/.libs/libpcp1.a
|
gencheader_LDADD = ../libpcp/.libs/libpcp1.a
|
||||||
gencheader_SOURCES = gencheader.c
|
gencheader_SOURCES = gencheader.c
|
||||||
statictest_LDADD = ../libpcp/.libs/libpcp1.a
|
statictest_LDADD = ../libpcp/.libs/libpcp1.a
|
||||||
@@ -274,7 +274,7 @@ invalidkeys_LDADD = ../libpcp/.libs/libpcp1.a \
|
|||||||
invalidkeys_SOURCES = invalidkeys.c
|
invalidkeys_SOURCES = invalidkeys.c
|
||||||
pwhashes_LDADD = ../libpcp/.libs/libpcp1.a
|
pwhashes_LDADD = ../libpcp/.libs/libpcp1.a
|
||||||
pwhashes_SOURCES = pwhashes.c
|
pwhashes_SOURCES = pwhashes.c
|
||||||
AM_CXXFLAGS = -I../include -I../bindings/cpp -Wall -g
|
AM_CXXFLAGS = -I../include -I../bindings/cpp -I../libpcp/scrypt/crypto -Wall -g
|
||||||
cpptest_LDADD = ../bindings/cpp/.libs/libpcp1++.a ../libpcp/.libs/libpcp1.a
|
cpptest_LDADD = ../bindings/cpp/.libs/libpcp1++.a ../libpcp/.libs/libpcp1.a
|
||||||
cpptest_SOURCES = cpptest.cpp
|
cpptest_SOURCES = cpptest.cpp
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|||||||
@@ -3,33 +3,33 @@
|
|||||||
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
||||||
Owner: Bart
|
Owner: Bart
|
||||||
Mail: bart@local
|
Mail: bart@local
|
||||||
Key-ID: 0x8C26BF8A5F2C72E8
|
Key-ID: 0xC8F4F6CD7CA2E952
|
||||||
Public-Key: 1gxyGI2IKAa=A*)lJG78tgkw350bPzBaCtxH%G6ZbldYz
|
Public-Key: 0$E&2YLiH[z:PMtYIbvdU-$NKXb1&w(x#NxV2^/OzVx+q
|
||||||
Creation Time: 2013-11-24T19:39:00
|
Creation Time: 2014-01-16T15:23:18
|
||||||
Checksum: FE:EC:88:38:A1:4F:7E:1B:BB:05:95:5E:81:58:DF:24
|
Checksum: 5B:FC:E9:D2:0E:6E:FB:84:8A:99:12:47:FA:03:F2:8A
|
||||||
2F:CA:8A:61:EE:6B:F4:13:AE:53:5C:BC:68:AC:AC:E5
|
AE:53:C1:53:C8:72:14:67:94:62:E5:74:4B:A2:D5:8D
|
||||||
Serial Number: 0xB0E778FA
|
Serial Number: 0xA106090E
|
||||||
Key Version: 0x00000004
|
Key Version: 0x00000004
|
||||||
Random Art ID: +----------------+
|
Random Art ID: +----------------+
|
||||||
| |
|
| |
|
||||||
| |
|
| o |
|
||||||
| |
|
| = |
|
||||||
| . . |
|
| . = . |
|
||||||
| . . . + . |
|
| * o o |
|
||||||
|. . .. + o |
|
| B . |
|
||||||
|. .o o o |
|
| + . |
|
||||||
| ..o.. . |
|
| . |
|
||||||
+----------------+
|
+----------------+
|
||||||
|
|
||||||
1gxyGI2IKAa=A*)lJG78tgkw350bPzBaCtxH%G6ZbFH2!uP]vMhKFj6gldkUZcd%$g+^M[J
|
0$E&2YLiH[z:PMtYIbvdU-$NKXb1&w(x#NxV2^/Oz^1n/BwNkv=*4z7QuGvvK{n*i>D=+in
|
||||||
hj]eN6g9@eKA(^Bo5dCk(2m^n2SL^O*p?](fdGuF^@zqPuoJ3jHD)Vd^GqNMs*fRHWcT3Pe
|
-V8Enhd=ll{+s5Bo4PJ>E0gi*mD%z182VHzP>abuT=DNmVn3}L9Am#uS*46f5%d2S*gU?qk
|
||||||
0v5=Kbj}!K#W1z3Qqx(m{B8M/Gma<lOS$S#u^wK1lGqctK3sqXNvncbegBTh}cvN9{JYw8&
|
nv1C+k-+.#oc4-.K]z!d^xJeflt{Wzd/T()R^Xxi#YrK3^V@gUY>0<3yM&wyy!sq/N=D<K^
|
||||||
s!E?C9Yosz}yP/$a>U0$Q]IkMbwwfEPN-vrd/sM/HXLSfDlHA<nclmppD8VN{u5dZYs^sOO
|
7DrolX!PfT%4DsG48*iU7niLHTq71U=rV1a>Ppa2OhKqNIlgtB={n0TiN>z9/U0VSM/lu5=
|
||||||
FDfo^.dQ{7}oM5^1l$hJy-.3ToZ+X%[?!!e23Gyj8o^s{tMvJ]/:HeI!ZY-mA}Q^47HuC*9
|
Zx)xGG.u>%IdCgpe>zpl]o*{Jy9twHqeeY:]PfQ2[I][p=0(05Q-<QMkxm(^{Da?CFB4fcb
|
||||||
G4ccB9jJ.q<#z9p3Xc2EjWcUv^Rdv8n66HII>MJyes5iOvQTq0kX$vGvqC}CVj<L?bbiE#W
|
W)Qx*u)-8E>6GQTD?[qBXK3(E+Xpno1O6B6qk#ZkZfq:0vQTq0kX$vGvqC]]Rj-vK]h${+q
|
||||||
SaVJ6q.O3l&%A=jUpi=y*/1=-fQdqE#qi0w%LPdvNDGXpi>3!OnvaP.R<cwUQK@WU%uTXXA
|
%JFk{mfDHPv>*6}Kl9:hK-=OC7*(O3+(4x:w%D=mTLVl}CoQOYWi&sJ=/z}PSLM>&u4sO-j
|
||||||
whBpbL[@>ui86&vy^lU9sE^G$1&-]iQ@Q^T$TB{h}79MD!oL}&9:5wc/]4ZwHW}r0g>/t&v
|
X8o-LyX!dlLRG*2+Trjywulk!0jsUgkucG}.u=TfJvv?FR.BG[ef/!Xe16NnXs8BNJV]!HX
|
||||||
^2Ic+6Cpm-0QxL*QeL[q#CLn!g9{<Ez&@q:AAWpBu1y0fjH5[?/0=<<-78K={i.q9O%HEn-
|
9pYT1AxBs[^=e(o7Duaf-@T%}&L3#fPqL8wNT7WU$sb/I}Vc!(kiW/EgOtKk=(}GqAxM{=q
|
||||||
gp<cL&9Jj%yMiLeXI3=qJ:f7gO5Z?MK@2rj=MSKG)B!UcHL)ny@+/Y}k]G+D/ZLU({^WNTR
|
(Irvm[!YdZUd*Dx=[7^(JKl+}=Pn{0Uw5yU]*?MWu{ra.!K:6X3Ks.kB9?Yt*bX<-Y.-A.^
|
||||||
V{a(u^RJwLlOZL^mMrW>mLWs&gdse50@@r308!$I.#G=q1Hd6l}tZG}
|
OnMv>(f4[gi7t.]hBx>>lQrE@iw&L(0@@r308?CmrSAa11FD2a4GDFe
|
||||||
------ END PCP PUBLICKEY ------
|
------ END PCP PUBLICKEY ------
|
||||||
|
|||||||
@@ -3,33 +3,33 @@
|
|||||||
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
||||||
Owner: Alicia
|
Owner: Alicia
|
||||||
Mail: alicia@local
|
Mail: alicia@local
|
||||||
Key-ID: 0x518602BB8F2D8C7F
|
Key-ID: 0xD65571D97AD62340
|
||||||
Public-Key: 1eRhFt(S$Aj[MWvNqYUgL(Mfpe86usIa9bvMwFc/7YTKo
|
Public-Key: 1l04k^wOno{Gb/vuQ@vq^q=3h<mkwPg6au>[0lL#CMmZz
|
||||||
Creation Time: 2013-11-24T19:38:59
|
Creation Time: 2014-01-16T15:23:17
|
||||||
Checksum: 12:FE:CA:AD:09:3E:9F:2D:3D:3A:E8:8C:86:D5:75:58
|
Checksum: 74:02:7B:F0:14:A6:05:D4:01:C2:B1:65:8B:5A:97:97
|
||||||
C3:9C:5C:51:96:F7:1E:FA:0F:6D:75:1C:20:87:53:2D
|
CD:B6:8A:8F:32:A4:8C:40:B7:0C:28:C6:87:8D:28:F4
|
||||||
Serial Number: 0x49B690C5
|
Serial Number: 0x8F3E4F43
|
||||||
Key Version: 0x00000004
|
Key Version: 0x00000004
|
||||||
Random Art ID: +----------------+
|
Random Art ID: +----------------+
|
||||||
| . |
|
|
||||||
| . . . |
|
|
||||||
| o o |
|
|
||||||
| . + . .|
|
|
||||||
| . = . +o|
|
|
||||||
| . . o +|
|
|
||||||
| . |
|
|
||||||
| |
|
| |
|
||||||
|
| |
|
||||||
|
| . |
|
||||||
|
| . + . |
|
||||||
|
|. . . o + . |
|
||||||
|
|. . o o + |
|
||||||
|
|. . . o . . |
|
||||||
|
| . . |
|
||||||
+----------------+
|
+----------------+
|
||||||
|
|
||||||
1eRhFt(S$Aj[MWvNqYUgL(Mfpe86usIa9bvMwFc/7^R<>]u#!:jIb>^+HObot$n)mmc+r:n
|
1l04k^wOno{Gb/vuQ@vq^q=3h<mkwPg6au>[0lL#C*QCMc(0^V-{1V339HHb]:?T-F)}&&A
|
||||||
}14[Zcddn*^b:<v}/uKAjgTDFi}ApL/jtC[47Yg8Rx#$)%tEdZp-Utr0(jI[%%jWp)pt0u+
|
n::om#4.IaWG{Uv}/uKG.c8VB$!TzGR$o(cxJ{Wd[.in&DkPZwBPVu>Yt>Q?TU0jq1P&y-K
|
||||||
ys-SF.j-oM(RKNiE:#[v*Bj+8&JH2rQ3EBCDs*J<U)sgcm[(7&=<3x/T:xEi6!Vz-#=C>:?
|
t/R).!(vf5jS6&8Vlf6*p7rKi767MvB=*-:sDy+NxI}(gG2=]pCV%d1$n.lFFa]t7J9PQ{3
|
||||||
%SZKTmRJYshko/&>x<*o77i[XM3W^-(OEt>6IvJkr]D<&D4cN?z.&Gl//X/D[KsAOUwlMLz
|
>nZHNW0l(Srib%(INR!w.l^?}r=cq3DHlTj-FmkGd67@S@!41d^bV1OE}FbEfz/@?r3-@.4
|
||||||
fCSdcJ@a>wDHDFwj@M!RyQo.OT5jB0C5^&1J[>}d5bBR}lYwK+rlZfP&yme.D}}vxg6SW^U
|
=YJ!]6Tf6Vu@bJ{c@zCJje:(y<ZEZb7a@NQ+u]}5Ra?Ju]c&4F2&:wwK+J8nJB9jxeltbaO
|
||||||
U$(/JeTC(w6t.*v9LxYl>7kQ^W)!sN5pBP+P(eVO)5Wu7vqGT/x<<nyz!0i(06bWS5^dXUT
|
GdZ]3(nlOZHdz9(T6(c:qo*#Tptw}.g5vBdWEL^W!2TDGvqGT/x<<nyz!0i(05/!N67=rFb
|
||||||
(DC.Y]e*d]r^yB>4zpJbh{}Smh5R?}42cWM@YOy+P2$/+Z#d=11b)8u]L[rh]7!DJglxt=-
|
2b<&j{YVd=aOHgnOC:.>0a+@pZ{MOW<nj?(nu=<hYeeSCYhp7mC#a@omS.>[-CpCHShNBOA
|
||||||
E=o)OI1s)g(rbpa8I{AJKG[nkxhVzf(j}!tgtaLm7t]B-<xSdHrqbQzOFJFhW%Y@^q-/})F
|
:PxEvD^xauUrzZ9QvB7Fl2OM1h&FzWJ9m&S$7!eNnfJO2>oBH7iua7k@EZ=.RqE3HV9BAc9
|
||||||
iDJMM}@oSyNeIy=e#MrKPF-:M@TZ2D05hhG]LMB/p{h<E@UpM]]@>3=tBMsTL$Q27$%n+wm
|
v+0{hpfRAA8@K]nwPMhI}eVPa(fRtZ@3?ugeUfyRd]^bYQ[?n>HxuuKLJTVrxpuf*ARnTLd
|
||||||
72<g62jV:ZR&Ry&IxL)P]zK?r%I@:${D<z>F):2ctn)*?IOe64&^>h={:UX7fKdj{myaS[o
|
Zj[O(>.7/g*mhTAqV-waQ8OG*?xR7W#/-SU=Zr$E>R:!c%8i2qF0>k>:E{Pb1ekc3ABHu0q
|
||||||
l>o*<]dLqBf/R6Bgd1q!mLWv>lPmEm0@@r308!$I.VfVp1wc4--q/(r
|
xN3y9/NdE5hz)uJf*[2Xk$0Q^gC*==0@@r308?Cmrr9101DL-xlJv8^
|
||||||
------ END PCP PUBLICKEY ------
|
------ END PCP PUBLICKEY ------
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
----- BEGIN PCP SECRET KEY -----
|
----- BEGIN PCP SECRET KEY -----
|
||||||
Generated by: Pretty Curved Privacy Version 0.1.5
|
Generated by: Pretty Curved Privacy Version 0.1.5
|
||||||
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
||||||
Key-ID: 0x518602BB8F2D8C7F
|
Key-ID: 0xD65571D97AD62340
|
||||||
Creation Time: 2013-11-24T19:38:59
|
Creation Time: 2014-01-16T15:23:17
|
||||||
Serial Number: 0x49B690C5
|
Serial Number: 0x8F3E4F43
|
||||||
Key Version: 0x00000004
|
Key Version: 0x00000004
|
||||||
|
|
||||||
1eRhFt(S$Aj[MWvNqYUgL(Mfpe86usIa9bvMwFc/7YWNWenlDKe}(VQ/s$k>o^GU#w}zX3=
|
1l04k^wOno{Gb/vuQ@vq^q=3h<mkwPg6au>[0lL#CMuQ#cM6#o=Cetrqd&M@k[wLIgQ)#yy
|
||||||
rBetin9dCRA[]K]u#!:jIb>^+HObot$n)mmc+r:n}14[Zcddn*YeWrQP[h1^k(qBeTLOaPu
|
FdX9Mt2yIHTy3-c(0^V-{1V339HHb]:?T-F)}&&An::om#4.IaPQR]MAb/t+lzt.C!%=x:4
|
||||||
s-O0DqovBY*z=5R^{3zjI{g[+3[fISYF!ob)X3lR[9AwygvJsm*!A=}gmEY><uSWCseu5dd
|
mxD:gyP!x4DGUAM%4iVFMT@n/4W77]e0FJ3hgYClFiapHmY.NuDkO2*G3jIi2mlIj]]%ePl
|
||||||
l?Ge1gQ+va(z!lDEaEeksX3y0:+V7SIZIkS0k}GDMEh$Y>OUxP@Z?Fsx6fa{br>VG3A]P4X
|
9#>r&w-u2Z@vA@C*hWyx16^t6JYORCl>hxTtsE(}ze>:.bxI0ybM]Klcam&uV0QLrJfBPB?
|
||||||
vT%6^J31QsR+hG*U2V%:ex7j}5wyWf{frah/+j:R}{]h3H@Y$vmv}/uKAjgTDFi}ApL/jtC
|
0cQx<ArcEhY=G$Z7j//$N3S.H$0%fA4-7!fgcd8LsD]i}?7Eq>Kv}/uKG.c8VB$!TzGR$o(
|
||||||
[47Yg8Rx#$)%tEdZp-Utr0(jI[%%jWp)pt0u+ys-SF.j-oM(RKNiE:#[v*Bj+8&JH2rQ3EB
|
cxJ{Wd[.in&DkPZwBPVu>Yt>Q?TU0jq1P&y-Kt/R).!(vf5jS6&8Vlf6*p7rKi767MvB=*-
|
||||||
CDs*J<U)sgcm[(7&=<3x/T:xEi6!Vz-#=C>:?%SZKTmRJYshko/&>x<*o77i[XM3W^-(OEt
|
:sDy+NxI}(gG2=]pCV%d1$n.lFFa]t7J9PQ{3>nZHNW0l(Srib%(INR!w.l^?}r=cq3DHlT
|
||||||
>6IvJkr]D<&D4cN?z.&Gl//X/D[KsAOUwlMLzfCSdcJ@a>wDHDFwj@M!RyQo.OT5jB0C5^&
|
j-FmkGd67@S@!41d^bV1OE}FbEfz/@?r3-@.4=YJ!]6Tf6Vu@bJ{c@zCJje:(y<ZEZb7a@N
|
||||||
1J[>}d5bBR}lYwK+rlZfP&yme.D}}vxg6SW^UU$(/JeTC(w6t.*v9LxYl>7kQ^W)!sN5pBP
|
Q+u]}5Ra?Ju]c&4F2&:wwK+J8nJB9jxeltbaOGdZ]3(nlOZHdz9(T6(c:qo*#Tptw}.g5vB
|
||||||
+P(eVO)5Wu7vqGT/x<<nyz!0i(06bWS5^dXUT(DC.Y]e*d]r^yB>4zpJbh{}Smh5R?}42cW
|
dWEL^W!2TDGvqGT/x<<nyz!0i(05/!N67=rFb2b<&j{YVd=aOHgnOC:.>0a+@pZ{MOW<nj?
|
||||||
M@YOy+P2$/+Z#d=11b)8u]L[rh]7!DJglxt=-E=o)OI1s)g(rbpa8I{AJKG[nkxhVzf(j}!
|
(nu=<hYeeSCYhp7mC#a@omS.>[-CpCHShNBOA:PxEvD^xauUrzZ9QvB7Fl2OM1h&FzWJ9m&
|
||||||
tgtaLm7t]B-<xSdHrqbQzOFJFhW%Y@^q-/})FiDJMM}@oSyNeIy=e#MrKPF-:M@TZ2D05hh
|
S$7!eNnfJO2>oBH7iua7k@EZ=.RqE3HV9BAc9v+0{hpfRAA8@K]nwPMhI}eVPa(fRtZ@3?u
|
||||||
G]LMB/p{h<E@UpM]]@>3=tBMsTL$Q27$%n+wm72<g62jV:ZR&Ry&IxL)P]zK?r%I@:${D<z
|
geUfyRd]^bYQ[?n>HxuuKLJTVrxpuf*ARnTLdZj[O(>.7/g*mhTAqV-waQ8OG*?xR7W#/-S
|
||||||
>F):2ctn)*?IOe64&^>h={:UX7fKdj{myaS[ol>o*<]dLqBf/R6Bgd1q!mLWv>lPmEm0rr9
|
U=Zr$E>R:!c%8i2qF0>k>:E{Pb1ekc3ABHu0qxN3y9/NdE5hz)uJf*[2Xk$0Q^gC*==0rr9
|
||||||
108!$I.VfVp1wc4--q/(r
|
108?Cmrr9101DL-xlJv8^
|
||||||
------ END PCP SECRET KEY ------
|
------ END PCP SECRET KEY ------
|
||||||
|
|||||||
@@ -3,33 +3,33 @@
|
|||||||
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
||||||
Owner: Bobby
|
Owner: Bobby
|
||||||
Mail: bobby@local
|
Mail: bobby@local
|
||||||
Key-ID: 0x8F8C31402D541153
|
Key-ID: 0x7B8D298F82FE30FB
|
||||||
Public-Key: 18r!O41ZcJmA%Nft]C@63ItZ2s+14NZuf}DY+*wXf8$$L
|
Public-Key: 1kwx=)3f<[z$G%dAyqGMDHiU1fk1E?ff{Beb>:DK0@@r3
|
||||||
Creation Time: 2013-11-24T19:38:59
|
Creation Time: 2014-01-16T15:23:17
|
||||||
Checksum: CE:2C:FF:3F:D0:D3:C3:46:7D:3A:32:10:9E:92:22:3F
|
Checksum: 55:8C:D5:F8:E2:AD:BE:10:AA:AC:AD:21:DA:7D:57:37
|
||||||
2B:D3:EE:FB:66:53:01:E8:07:9A:83:12:2D:D7:D0:7D
|
49:82:60:BC:8E:9F:D5:E0:89:4E:E7:75:D7:9A:9F:A8
|
||||||
Serial Number: 0x53010B68
|
Serial Number: 0x3B7D8E3F
|
||||||
Key Version: 0x00000004
|
Key Version: 0x00000004
|
||||||
Random Art ID: +----------------+
|
Random Art ID: +----------------+
|
||||||
|
| .+ |
|
||||||
|
| . o |
|
||||||
|
| . o |
|
||||||
|
| . o = |
|
||||||
|
| o * . |
|
||||||
|
| . . o . |
|
||||||
|
| . . . |
|
||||||
| |
|
| |
|
||||||
| |
|
|
||||||
| . |
|
|
||||||
| . |
|
|
||||||
|. . . |
|
|
||||||
|+ . o . |
|
|
||||||
|o+o . + |
|
|
||||||
| ==. . |
|
|
||||||
+----------------+
|
+----------------+
|
||||||
|
|
||||||
18r!O41ZcJmA%Nft]C@63ItZ2s+14NZuf}DY+*wXfrMI6SgVY^IjrNb3P[$qAOIRFH<B<8=
|
1kwx=)3f<[z$G%dAyqGMDHiU1fk1E?ff{Beb>:DK15!qzj6cEirtl35VdQ}BQhLydYBFCg*
|
||||||
l<.=Q=>?c]*iOavTd%r/nn>4bO*92Ze8fnC(FSptK+Eu%4(or7sRgc7GvB[li3mawTB19uM
|
#GBSMN^epAyaOMvTd%73M89n2/5.rZOH7OF@!B{[Jb@BvX9w*a<MkU-TQO>XO/{9s?exp-9
|
||||||
%abae])GA#q@z}Zv^Ft[-SEJk9#79PZ4:g{G#6Z$}@iFL6%meRnU?{=<r142me^V++FD+nG
|
OzK-yHrV<xc@&<i{{35Qnvr8>dU?%8AT#AQ^rrh*C95bQ[AVPDXrRKO=lpG(SdPX4:a{h5o
|
||||||
p73vy5k?aV5naU5[gPq/m5:SL@FslmO:bAkwJeLuwP9[:Fitmv:i&dmj]N88kdJ4ubcSg1g
|
*t:0(Gnp4^NPQd6QJL*lV1JESB]mgmgjUi:gUSAndW+#$<8LRXs@n%fl1nXS7:<9lA[CG@S
|
||||||
bg%bE3N!ajVMV^21?A{MRVTP@k+bIs&v:u2qG[^/{cD>US>6xM[xO4Tz.8KO&^h?h:M.=xc
|
gBsXD%RxN*D(Dr$rfC04o[.X+I2SIUYl%%Tt2]JE0ZL]?@-#H/*<1}ryDnAy$JOg*f)W@NG
|
||||||
@70}#QM{lw[o?.[LCwyXmgQPNH@fZzm9Gz4b?%8*fQSNKvSbZ+C%Dg:v{%fNqBbn7tc.Ygi
|
DmA}6k-4cY}iV.V@P2.>=z=!c@Yx1Y9Ua75=N/U$SCJrYvSbZ+C%Dg:v{%fN4P)[jlU-gmX
|
||||||
.:ushR:wNi:YYbij8Zti0Fr]/J=!/NHcQKm8@*m6#J4#-of+%Il@Doo2W1(+s$}uyqmd@?z
|
{OJIYv^N*?%t%}/[3PE.FX*H(VIo?}PJcq+QieKd38Gs0L90V3?TsI*Wu!-OQTI6D!t%^/z
|
||||||
*@*QBgKy3%YW!zHGIZT<Nolii!N(QKxsb!Z%BiTcnIPduViC=m&k$R(r7N([(#**!IWCBVS
|
Zv8hJb.:E9F0/waiAxn{hxN=?k)Ou:$<()SO<0O=*!S^[3tZF7l=s(JrG0Xr@?f]vPHci&s
|
||||||
O6:L$$@q<f^&}oXSO(ZrOI6[70NA(dK}iff{JgA&zObTyKE>}}1XY6f({Aqmt0bUb0[8>9j
|
YGbjDjhoA[4yT/8NtGhdbw]Nvv1<J(69h[5L[!9!O6I>G66F-n/5=Rom.{Ks00<+F:U!q&4
|
||||||
v42PeNv76*v]V<evqwQ-{5<:D$D+yC^)c/4#6zr]Y}Q7Am&*n8?D%FJ8=oxSmXDl2-/*nU7
|
RFG*{^Hc}Luey1Cm4uI[UO9&%0NkoMzQ4%71!!>CMCzF}l=JeKCt]aL=tFsqLC2?+1K8le8
|
||||||
RsGrS}W/ePmMr:>f/gNtl]u!Qf/p-!0@@r308!$I.VfVp1xbsexAe2j
|
F/MEHJxk6rlo4v*ixfF/gdBX*fH!we0@@r308?Cmrr9101uR3(kl7V-
|
||||||
------ END PCP PUBLICKEY ------
|
------ END PCP PUBLICKEY ------
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
----- BEGIN PCP SECRET KEY -----
|
----- BEGIN PCP SECRET KEY -----
|
||||||
Generated by: Pretty Curved Privacy Version 0.1.5
|
Generated by: Pretty Curved Privacy Version 0.1.5
|
||||||
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
Cipher: CURVE25519-ED25519-SALSA20-POLY1305
|
||||||
Key-ID: 0x8F8C31402D541153
|
Key-ID: 0x7B8D298F82FE30FB
|
||||||
Creation Time: 2013-11-24T19:38:59
|
Creation Time: 2014-01-16T15:23:17
|
||||||
Serial Number: 0x53010B68
|
Serial Number: 0x3B7D8E3F
|
||||||
Key Version: 0x00000004
|
Key Version: 0x00000004
|
||||||
|
|
||||||
18r!O41ZcJmA%Nft]C@63ItZ2s+14NZuf}DY+*wXf97h#Sy$NsTEg$:(a)2^3VrK/=:@2Vh
|
1kwx=)3f<[z$G%dAyqGMDHiU1fk1E?ff{Beb>:DK0%0RsA}*LOS&hj!ynJ^EAY<xad!haKo
|
||||||
ticy+]-7)jGY)jSgVY^IjrNb3P[$qAOIRFH<B<8=l<.=Q=>?c]-e*@ZTW$!SSJ>(I@^&=3L
|
%$Eca%S{rvP8wJj6cEirtl35VdQ}BQhLydYBFCg*#GBSMN^epAr9{wwvYK0DpU.5D6qH[(L
|
||||||
afZ@8X]6RsA8WOr@L5&6Pyvz1!ofy{JqfM+RPtlHO><!P-:B&Id5!(x{Vsfug2]dLn=E?q4
|
ZQ-/e>yY=DvfJIg<b3w*Xw$*)&j3+3Y?KFXrk+u?Dwe!8c8R)a}<#BGMP%JXC=Co9n1?=h=
|
||||||
-h[SutvBH/FU)pp$eNs]X{mnCp?p/!KuQK*#ZC=PT%b=U=%?%>4(3rqj6/C.Bz5i&[<TI@<
|
0TgVTk8fz5(b25jFQPIF/F%mYpe@%e#U7JFmq6?MS!Kqh?+y8nyYnlv/PZp5NF]KiQueJn?
|
||||||
OvgJG^W?PaX=ud6Mw5]lgLpk!r(vm}guzgL{z6WV&ia9/Q[<mn7vTd%r/nn>4bO*92Ze8fn
|
.[STEe)1kJhbqY-=FlSV>g<Sc6BE%dl}Lwc(SuadkpClna{D&!cvTd%73M89n2/5.rZOH7O
|
||||||
C(FSptK+Eu%4(or7sRgc7GvB[li3mawTB19uM%abae])GA#q@z}Zv^Ft[-SEJk9#79PZ4:g
|
F@!B{[Jb@BvX9w*a<MkU-TQO>XO/{9s?exp-9OzK-yHrV<xc@&<i{{35Qnvr8>dU?%8AT#A
|
||||||
{G#6Z$}@iFL6%meRnU?{=<r142me^V++FD+nGp73vy5k?aV5naU5[gPq/m5:SL@FslmO:bA
|
Q^rrh*C95bQ[AVPDXrRKO=lpG(SdPX4:a{h5o*t:0(Gnp4^NPQd6QJL*lV1JESB]mgmgjUi
|
||||||
kwJeLuwP9[:Fitmv:i&dmj]N88kdJ4ubcSg1gbg%bE3N!ajVMV^21?A{MRVTP@k+bIs&v:u
|
:gUSAndW+#$<8LRXs@n%fl1nXS7:<9lA[CG@SgBsXD%RxN*D(Dr$rfC04o[.X+I2SIUYl%%
|
||||||
2qG[^/{cD>US>6xM[xO4Tz.8KO&^h?h:M.=xc@70}#QM{lw[o?.[LCwyXmgQPNH@fZzm9Gz
|
Tt2]JE0ZL]?@-#H/*<1}ryDnAy$JOg*f)W@NGDmA}6k-4cY}iV.V@P2.>=z=!c@Yx1Y9Ua7
|
||||||
4b?%8*fQSNKvSbZ+C%Dg:v{%fNqBbn7tc.Ygi.:ushR:wNi:YYbij8Zti0Fr]/J=!/NHcQK
|
5=N/U$SCJrYvSbZ+C%Dg:v{%fN4P)[jlU-gmX{OJIYv^N*?%t%}/[3PE.FX*H(VIo?}PJcq
|
||||||
m8@*m6#J4#-of+%Il@Doo2W1(+s$}uyqmd@?z*@*QBgKy3%YW!zHGIZT<Nolii!N(QKxsb!
|
+QieKd38Gs0L90V3?TsI*Wu!-OQTI6D!t%^/zZv8hJb.:E9F0/waiAxn{hxN=?k)Ou:$<()
|
||||||
Z%BiTcnIPduViC=m&k$R(r7N([(#**!IWCBVSO6:L$$@q<f^&}oXSO(ZrOI6[70NA(dK}if
|
SO<0O=*!S^[3tZF7l=s(JrG0Xr@?f]vPHci&sYGbjDjhoA[4yT/8NtGhdbw]Nvv1<J(69h[
|
||||||
f{JgA&zObTyKE>}}1XY6f({Aqmt0bUb0[8>9jv42PeNv76*v]V<evqwQ-{5<:D$D+yC^)c/
|
5L[!9!O6I>G66F-n/5=Rom.{Ks00<+F:U!q&4RFG*{^Hc}Luey1Cm4uI[UO9&%0NkoMzQ4%
|
||||||
4#6zr]Y}Q7Am&*n8?D%FJ8=oxSmXDl2-/*nU7RsGrS}W/ePmMr:>f/gNtl]u!Qf/p-!0SSi
|
71!!>CMCzF}l=JeKCt]aL=tFsqLC2?+1K8le8F/MEHJxk6rlo4v*ixfF/gdBX*fH!we0SSi
|
||||||
208!$I.VfVp1xbsexAe2j
|
208?Cmrr9101uR3(kl7V-
|
||||||
------ END PCP SECRET KEY ------
|
------ END PCP SECRET KEY ------
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
bartid = 0x8C26BF8A5F2C72E8
|
bartid = 0xC8F4F6CD7CA2E952
|
||||||
bartserial = 0xB0E778FA
|
bartserial = 0xA106090E
|
||||||
idbobby = 0x8F8C31402D541153
|
idbobby = 0x7B8D298F82FE30FB
|
||||||
idalicia = 0x518602BB8F2D8C7F
|
idalicia = 0xD65571D97AD62340
|
||||||
mailbobby = bobby@local
|
mailbobby = bobby@local
|
||||||
mailalicia = alicia@local
|
mailalicia = alicia@local
|
||||||
|
|||||||
@@ -23,13 +23,14 @@ int main() {
|
|||||||
pw *item;
|
pw *item;
|
||||||
pw *list = NULL;
|
pw *list = NULL;
|
||||||
pw *have = NULL;
|
pw *have = NULL;
|
||||||
|
unsigned char nonce[32] = {1};
|
||||||
|
|
||||||
sodium_init();
|
sodium_init();
|
||||||
|
|
||||||
for(i=97; i<126; ++i) {
|
for(i=97; i<126; ++i) {
|
||||||
pass[0] = i;
|
pass[0] = i;
|
||||||
pass[1] = 0;
|
pass[1] = 0;
|
||||||
h = pcp_derivekey(pass);
|
h = pcp_derivekey(pass, nonce);
|
||||||
|
|
||||||
p =0;
|
p =0;
|
||||||
for(t=0; t<32; ++t) {
|
for(t=0; t<32; ++t) {
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
size_t secret_a_len = 32;
|
size_t secret_a_len = 32;
|
||||||
unsigned char secret_a[32] = {
|
unsigned char secret_a[32] = {
|
||||||
0xe0, 0x75, 0x2c, 0xb7, 0xeb, 0x7d, 0x73, 0x7a,
|
0x90, 0x14, 0xe7, 0xb5, 0x90, 0x04, 0x4f, 0xc0,
|
||||||
0x5b, 0x1c, 0x45, 0xf8, 0x9e, 0x8c, 0xc5, 0xfe,
|
0xc6, 0xdf, 0x87, 0xe6, 0xbd, 0x87, 0xc8, 0x56,
|
||||||
0xb7, 0x30, 0x9e, 0xac, 0x03, 0x7c, 0x57, 0x0f,
|
0x64, 0x07, 0xfb, 0xb3, 0x3a, 0x25, 0x7c, 0xb9,
|
||||||
0x0b, 0x76, 0x49, 0x2d, 0xa1, 0x33, 0x43, 0x53
|
0x3f, 0xbc, 0x04, 0xd1, 0xd2, 0x2a, 0x56, 0x4e
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t public_a_len = 32;
|
size_t public_a_len = 32;
|
||||||
unsigned char public_a[32] = {
|
unsigned char public_a[32] = {
|
||||||
0x2f, 0xb4, 0xaa, 0x49, 0x06, 0xf1, 0x8f, 0xa1,
|
0x55, 0xfd, 0x89, 0xe6, 0xbd, 0x57, 0x49, 0x4b,
|
||||||
0x22, 0xa0, 0x44, 0xf3, 0xd1, 0x3d, 0x0b, 0xca,
|
0x24, 0xaf, 0x07, 0x07, 0x81, 0xd7, 0x82, 0x8b,
|
||||||
0xe3, 0x5f, 0x7c, 0x3b, 0x23, 0x05, 0xf0, 0xb2,
|
0x33, 0x80, 0x60, 0x08, 0xf9, 0x56, 0xe2, 0x04,
|
||||||
0x51, 0x11, 0xe8, 0x7f, 0x32, 0xc8, 0xec, 0x17
|
0xe3, 0x1c, 0xf7, 0x5b, 0x1e, 0x1c, 0x74, 0x3d
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t secret_b_len = 32;
|
size_t secret_b_len = 32;
|
||||||
unsigned char secret_b[32] = {
|
unsigned char secret_b[32] = {
|
||||||
0xc0, 0xb6, 0xfb, 0xa5, 0x3b, 0xd2, 0x10, 0x76,
|
0x30, 0x4c, 0xaf, 0xb4, 0x6f, 0x09, 0x17, 0xa7,
|
||||||
0x40, 0xf4, 0xbf, 0xda, 0x99, 0xdc, 0x6b, 0xf0,
|
0x9a, 0x2d, 0xe3, 0xa8, 0x56, 0xff, 0x13, 0xac,
|
||||||
0xf5, 0xbd, 0xcc, 0x2e, 0xaa, 0x85, 0x6a, 0x62,
|
0xbc, 0xc7, 0xa2, 0x56, 0x5d, 0xfd, 0x39, 0x88,
|
||||||
0x64, 0xf4, 0xa0, 0xc8, 0xad, 0x82, 0x43, 0x56
|
0x1b, 0xe0, 0xaa, 0x85, 0xfe, 0x15, 0xba, 0x40
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t public_b_len = 32;
|
size_t public_b_len = 32;
|
||||||
unsigned char public_b[32] = {
|
unsigned char public_b[32] = {
|
||||||
0x47, 0xaa, 0x98, 0xad, 0xcd, 0x76, 0x6d, 0x8d,
|
0xcb, 0x8b, 0x3e, 0x3f, 0xca, 0xff, 0x0d, 0xdd,
|
||||||
0x7a, 0x1a, 0x4f, 0x5e, 0x24, 0xac, 0x98, 0xb9,
|
0x6c, 0xe3, 0xc9, 0x28, 0x2c, 0xe8, 0x06, 0x94,
|
||||||
0x07, 0x3d, 0x48, 0xeb, 0x29, 0x41, 0x4c, 0x82,
|
0xc5, 0x63, 0x63, 0xa0, 0x66, 0x85, 0x28, 0x72,
|
||||||
0x06, 0x92, 0x58, 0xa4, 0x7d, 0xd8, 0x53, 0x7d
|
0x5a, 0x5b, 0xff, 0x5f, 0x06, 0xa1, 0xa4, 0x69
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t message_len = 12;
|
size_t message_len = 12;
|
||||||
@@ -38,16 +38,16 @@ unsigned char message[12] = {
|
|||||||
|
|
||||||
size_t nonce_len = 24;
|
size_t nonce_len = 24;
|
||||||
unsigned char nonce[24] = {
|
unsigned char nonce[24] = {
|
||||||
0x24, 0x64, 0x0e, 0xd3, 0x8a, 0xbf, 0x98, 0x52,
|
0xa9, 0x22, 0x83, 0x39, 0x47, 0x80, 0x30, 0x04,
|
||||||
0x1e, 0xd9, 0xa4, 0xdd, 0x93, 0x27, 0x11, 0xee,
|
0x37, 0x38, 0xd0, 0x34, 0x97, 0x6c, 0x52, 0x8e,
|
||||||
0x63, 0x7e, 0x49, 0x2e, 0x97, 0x3b, 0x78, 0xee
|
0x6a, 0xe3, 0xcd, 0x4c, 0x8d, 0xdd, 0x74, 0x5a
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t cipher_len = 28;
|
size_t cipher_len = 28;
|
||||||
unsigned char cipher[28] = {
|
unsigned char cipher[28] = {
|
||||||
0x5f, 0x55, 0xeb, 0x71, 0x24, 0x84, 0x81, 0xdd,
|
0x2a, 0x93, 0x39, 0x8d, 0x84, 0x69, 0x99, 0x5d,
|
||||||
0x17, 0x74, 0x89, 0xe2, 0x15, 0xbe, 0x3d, 0xc7,
|
0x61, 0x9c, 0x19, 0x80, 0x2f, 0x18, 0x16, 0x38,
|
||||||
0xd8, 0xce, 0x68, 0xc6, 0x6c, 0x2b, 0x45, 0xc7,
|
0x5c, 0x1d, 0x08, 0x5e, 0xcc, 0xed, 0xed, 0x48,
|
||||||
0x61, 0x43, 0xe7, 0x6d
|
0xe8, 0x0d, 0x47, 0x92
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
1m<jZ+yjZ<y7gQ8a-W9rjAzcQ}{c4(@9#ojRD=2+yP7ItztJ%DY9G@(QX^AJd4*xQkbq[}w
|
0#B%]Dwej74e/:?9?y.aITSgR{crR@K+V$MjQlZ966qVbxJ8Iq6t9[)!LtTh+=iGlR$sQ=Z
|
||||||
F{60Nx)SElqzlazddr)0gJtlcE>LG&iym32X&^m7LJG900W!1Oo8u]r::]?<!.@<uwxGw(/
|
V)5}WAU!I+Uz>-zddr)0i.<!3HpEIvt9mNUT?dI(<H1RnUCQ&cAE=r(z3I6!KACU=pKmGT8
|
||||||
%F)L=0c$J0h58T7&Dq=)H{bp0b!UNx}{XA:*3@4A[Ydpc=Jdx>SeByX8[qq<(O-!xv(-/rA
|
4})FO7^FOnvE=D%4cSfRQlO@)]JUn#sMKF*t3w0hk0P^2iZc=8+poK^woRlu#P#C=T:sjT8
|
||||||
@sAmlyfv%HzNBy/lEDhKPG&>QK%hKS2:%3FuE+&QWD}$}Pm-/zYILHtH-@g^.dsVZF%B[LI
|
rKmSx6SBHzL3a]eC$ec&J3Pr){EZI!Tjc$z@CrPpph+ZeI0n?xKH2e2ZOschWU!FiN}VQg-
|
||||||
4UZ&G(q5giPD@l&NqrJ)e1(Hdj-Fz0#kxifA!jr1.z%[dP<^QobH5uN4dbNHZxk3b(gG/b)
|
RfeA&V*NZmYNC7q(0yl)vI&NYdMyi@20?E{i(FCmO^:sQqJJ)e2GiY/!0G5u.a/ct#dCa2%
|
||||||
{)T$E-YL)Z&!]tS5GL>91tkxZ<]}h5{6uoT5^OZc^##iYzFrW0vqYQvy&r/(yYKm0P?=H3f
|
?ZNTaM1f>k7kjJ$d)?6#]Xt<g[BXJxw{p$z0JB)<M!tSmzFrW0vqYQvy&r/(yYC}?6Ng#3[
|
||||||
xSQ)D#vQSz%hGprHEdo!3EMZ5}i(@Pg6p!w%T(>9R[*PR%kt}^d[+.EB[1PmMsyDHK7^sNF
|
{6!c{4A1>S?0Jg5kMaRF+3lq!^9Ta&N=m9WBqzPbMS?V0(38RI&lUz3>u=Ex97bV1>GG?:]
|
||||||
#:JH?il.++eNF4?}zoH%=)1wIgSQv&2$?b>@8JgV3RzR[bvEi>Fxf%c>6-gFYf=H!bMoeoQ
|
}!Wbl7/[QLx>d}1abB&&<Q<.*>28d>en{+a9]MVP5&$R)a[q]H1V[aamjBARL>^13Q1[*sT
|
||||||
f#=mgC%*=nCs>y])AbHM9{1AY&vOVRK9XxL!})KeiiO!g0Aho}2uW6uq18])6}q%R^&^={1
|
3bj+$9qrZc5cp0v}XUdX1TNw*M$^N%(+=4mG7OSBdo>[jq$-VH24T20B-k1ASX]0jm{@U}p
|
||||||
&<TF1qdA?LImyNLcoTVn8p>LXqD>YEdDJi2{=(0v(F4n<ZZpv6Id@slrRDKgX}6D5GMoW=[
|
-BI^@GeGfA.-HM9MR4ruqFJsMZEL7bb9&:gSmzqX*L4WF-rq=Iad-2%lN1iG3ZRmi>Z?+/2
|
||||||
*T2N.A1k&7k$0N@ixoI/f*XeWhAsha0@@r308!$I.#G=q1uZQ?pYHE}
|
}euk/J3OA.lp0vXl]WK[g=mlLi5Aq?0@@r308?CmrSAa11w$96fAq7M
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
1m<jZ+yjZ<y7gQ8a-W9rjAzcQ}{c4(@9#ojRD=2+yxb/MqJ60fXWL(A^*)H6wC?aaT(VQw%
|
0#B%]Dwej74e/:?9?y.aITSgR{crR@K+V$MjQlZ95=?<i*oFB8f9yBYg-?8mKwjQXxBo)CF
|
||||||
fLPSV}[bN&hx]ZztJ%DY9G@(QX^AJd4*xQkbq[}wF{60Nx)SEli4/aNs}jp@L{Ss27=+VW[
|
iV0]r<^JNSPDV[xJ8Iq6t9[)!LtTh+=iGlR$sQ=ZV)5}WAU!I+M6SKV?c:3JEK.G/JUkr9z
|
||||||
2V8EIbhZ!niKyRY4-FB#6C]mU%K-{^4AgO}dp#2tT#&M1N+rJ1VGkqsGK))s*zw=cfEh5v=
|
tpfp6[rQo##w^BMRG.i%s{z.!8aU]^h&n!$pBg6O71S>FMZ@3N)}@q>9*ti}7y<iyZR)CL4
|
||||||
@{lkjg@YZE[W[r4:xE?%Q]ZwT0d13NXu+S.V8kXkxwOc0(cuQ>U!f1Alj(l+v(WQt45)e^^
|
BO?IlYCy:k!k:rV.*7Z<WVxGyTvoD92W8<!3fo+>O=(48NJgpb^7t>]C/O9l9K7+lS%&5j1
|
||||||
aoeF!k>y}}wrB^Xp6Z2YLO[p#@@tj38RyuKHmN?l}Ro/p0&.Bi0zddr)0gJtlcE>LG&iym3
|
7EG+Z*vWp*Do[aBBeI$J6H%TH(EfMJ#bxiKf-rZE1qlEpQ98piVzddr)0i.<!3HpEIvt9mN
|
||||||
2X&^m7LJG900W!1Oo8u]r::]?<!.@<uwxGw(/%F)L=0c$J0h58T7&Dq=)H{bp0b!UNx}{XA
|
UT?dI(<H1RnUCQ&cAE=r(z3I6!KACU=pKmGT84})FO7^FOnvE=D%4cSfRQlO@)]JUn#sMKF
|
||||||
:*3@4A[Ydpc=Jdx>SeByX8[qq<(O-!xv(-/rA@sAmlyfv%HzNBy/lEDhKPG&>QK%hKS2:%3
|
*t3w0hk0P^2iZc=8+poK^woRlu#P#C=T:sjT8rKmSx6SBHzL3a]eC$ec&J3Pr){EZI!Tjc$
|
||||||
FuE+&QWD}$}Pm-/zYILHtH-@g^.dsVZF%B[LI4UZ&G(q5giPD@l&NqrJ)e1(Hdj-Fz0#kxi
|
z@CrPpph+ZeI0n?xKH2e2ZOschWU!FiN}VQg-RfeA&V*NZmYNC7q(0yl)vI&NYdMyi@20?E
|
||||||
fA!jr1.z%[dP<^QobH5uN4dbNHZxk3b(gG/b){)T$E-YL)Z&!]tS5GL>91tkxZ<]}h5{6uo
|
{i(FCmO^:sQqJJ)e2GiY/!0G5u.a/ct#dCa2%?ZNTaM1f>k7kjJ$d)?6#]Xt<g[BXJxw{p$
|
||||||
T5^OZc^##iYzFrW0vqYQvy&r/(yYKm0P?=H3fxSQ)D#vQSz%hGprHEdo!3EMZ5}i(@Pg6p!
|
z0JB)<M!tSmzFrW0vqYQvy&r/(yYC}?6Ng#3[{6!c{4A1>S?0Jg5kMaRF+3lq!^9Ta&N=m9
|
||||||
w%T(>9R[*PR%kt}^d[+.EB[1PmMsyDHK7^sNF#:JH?il.++eNF4?}zoH%=)1wIgSQv&2$?b
|
WBqzPbMS?V0(38RI&lUz3>u=Ex97bV1>GG?:]}!Wbl7/[QLx>d}1abB&&<Q<.*>28d>en{+
|
||||||
>@8JgV3RzR[bvEi>Fxf%c>6-gFYf=H!bMoeoQf#=mgC%*=nCs>y])AbHM9{1AY&vOVRK9Xx
|
a9]MVP5&$R)a[q]H1V[aamjBARL>^13Q1[*sT3bj+$9qrZc5cp0v}XUdX1TNw*M$^N%(+=4
|
||||||
L!})KeiiO!g0Aho}2uW6uq18])6}q%R^&^={1&<TF1qdA?LImyNLcoTVn8p>LXqD>YEdDJi
|
mG7OSBdo>[jq$-VH24T20B-k1ASX]0jm{@U}p-BI^@GeGfA.-HM9MR4ruqFJsMZEL7bb9&:
|
||||||
2{=(0v(F4n<ZZpv6Id@slrRDKgX}6D5GMoW=[*T2N.A1k&7k$0N@ixoI/f*XeWhAsha0SSi
|
gSmzqX*L4WF-rq=Iad-2%lN1iG3ZRmi>Z?+/2}euk/J3OA.lp0vXl]WK[g=mlLi5Aq?0SSi
|
||||||
208!$I.#G=q1uZQ?pYHE}
|
208?CmrSAa11w$96fAq7M
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
0uIv3?N)Qxev.C#E>NfM=aQEig<y}WISoDJ5H5@b8IGC5?D+V{aPSf5yJ:.x]:.E2Vzlq0(
|
0w</Ehs1#BA3k=>/-oUq9GivcM)-GCF]mc8k*mvSJ2zoa}UiF3VD[>Tqb+M7Jq#o!uC9?4q
|
||||||
0&)DA*&N9>km^Qzf@oBK&=Z$yRAe^bifC14#VrI:$M/LW&>f9b:7VE^@Y-{.({/XdJ=$p
|
n%aBuKb{ex.8-j9^T611j!.plUbqXG]Gl&P@L#d5cgteSu}?wC*rH/X@3GX0qgslBm+B(
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
1bv/%k]1URFil1tfg3xpP)i(Rk0Q>qjd#OrJ4Sw$Cp^NOiivH(3md$lUvpO#ehBcMBYiAH!
|
1f{Fy[cZFK+pp.B7>.v5Wen(2]6hjnTVi!yM&0jWr9@fI&@<90-GudZ]zJl%DITeE}LSTwz
|
||||||
(7t$T:GZ<4Mb$2hzu)Mlo4B&l]WK)mGrz*000000000008!$I.#G=q0SSi200000
|
G4fdyX#cd1W>mah8^lTix6k(hzN6BfAq7M000000000008?Cmr@-j20SSi200000
|
||||||
|
|||||||
Reference in New Issue
Block a user