2N/A#
2N/A# CDDL HEADER START
2N/A#
2N/A# The contents of this file are subject to the terms of the
2N/A# Common Development and Distribution License (the "License").
2N/A# You may not use this file except in compliance with the License.
2N/A#
2N/A# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A# or http://www.opensolaris.org/os/licensing.
2N/A# See the License for the specific language governing permissions
2N/A# and limitations under the License.
2N/A#
2N/A# When distributing Covered Code, include this CDDL HEADER in each
2N/A# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A# If applicable, add the following below this CDDL HEADER, with the
2N/A# fields enclosed by brackets "[]" replaced with your own identifying
2N/A# information: Portions Copyright [yyyy] [name of copyright owner]
2N/A#
2N/A# CDDL HEADER END
2N/A#
2N/A
2N/A#
2N/A# Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
2N/A#
2N/A
2N/A### Core definitions for each crypto component included in this library
2N/A
2N/A# AES
2N/AAES_DIR = $(SRC_REL)/common/crypto/aes
2N/AAES_COMMON_OBJS = aes_impl.o aes_modes.o
2N/AAES_COMMON_SRC = $(AES_COMMON_OBJS:%.o=$(AES_DIR)/%.c)
2N/AAES_FLAGS = -I$(AES_DIR)
2N/A
2N/A# Blowfish
2N/ABLOWFISH_DIR = $(SRC_REL)/common/crypto/blowfish
2N/ABLOWFISH_COMMON_OBJS = blowfish_impl.o
2N/ABLOWFISH_COMMON_SRC = $(BLOWFISH_COMMON_OBJS:%.o=$(BLOWFISH_DIR)/%.c)
2N/ABLOWFISH_FLAGS = -I$(BLOWFISH_DIR)
2N/A
2N/A# ARCFour
2N/AARCFOUR_DIR = $(SRC_REL)/common/crypto/arcfour
2N/AARCFOUR_COMMON_OBJS = arcfour_crypt.o
2N/AARCFOUR_COMMON_SRC = $(ARCFOUR_COMMON_OBJS:%.o=$(ARCFOUR_DIR)/%.c)
2N/AARCFOUR_FLAGS = -I$(ARCFOUR_DIR)
2N/A
2N/A# DES
2N/ADES_DIR = $(SRC_REL)/common/crypto/des
2N/ADES_COMMON_OBJS = des_impl.o des_ks.o des_modes.o
2N/ADES_COMMON_SRC = $(DES_COMMON_OBJS:%.o=$(DES_DIR)/%.c)
2N/ADES_FLAGS = -I$(DES_DIR)
2N/A
2N/A# BIGNUM -- needed by DH, DSA, RSA
2N/ABIGNUM_DIR = $(SRC_REL)/common/bignum
2N/ABIGNUM_COMMON_OBJS = bignumimpl.o
2N/ABIGNUM_COMMON_SRC = $(BIGNUM_COMMON_OBJS:%.o=$(BIGNUM_DIR)/%.c)
2N/ABIGNUM_FLAGS = -I$(BIGNUM_DIR)
2N/A
2N/A# Modes
2N/AMODES_DIR = $(SRC_REL)/common/crypto/modes
2N/AMODES_COMMON_OBJS = cbc.o ccm.o cfb.o ctr.o gcm.o ecb.o modes.o \
2N/A prov_lib.o xcbc.o xts.o
2N/AMODES_COMMON_SRC = $(MODES_COMMON_OBJS:%.o=$(MODES_DIR)/%.c)
2N/AMODES_FLAGS = -I$(MODES_DIR)
2N/A
2N/A# DH
2N/ADH_DIR = $(SRC_REL)/common/crypto/dh
2N/ADH_COMMON_OBJS = dh_impl.o
2N/ADH_COMMON_SRC = $(DH_COMMON_OBJS:%.o=$(DH_DIR)/%.c)
2N/ADH_FLAGS = $(BIGNUM_FLAGS) -I$(DH_DIR)
2N/A
2N/A# DSA
2N/ADSA_DIR = $(SRC_REL)/common/crypto/dsa
2N/ADSA_COMMON_OBJS = dsa_impl.o
2N/ADSA_COMMON_SRC = $(DSA_COMMON_OBJS:%.o=$(DSA_DIR)/%.c)
2N/ADSA_FLAGS = $(BIGNUM_FLAGS) -I$(DSA_DIR)
2N/A
2N/A# ECC
2N/AECC_DIR = $(SRC_REL)/common/crypto/ecc
2N/AECC_COMMON_OBJS = ec.o ec2_163.o ec2_mont.o ecdecode.o ecl_mult.o \
2N/A ecp_jac.o ec2_193.o ecl.o ecp_192.o \
2N/A ecp_521.o ecp_jm.o ec2_233.o ecl_curve.o ecp_224.o \
2N/A ecp_aff.o ecp_mont.o ec2_aff.o ec_naf.o ecl_gf.o \
2N/A ecp_256.o oid.o secitem.o
2N/AECC_COMMON_SRC = $(ECC_COMMON_OBJS:%.o=$(ECC_DIR)/%.c)
2N/AECC_FLAGS = $(MPI_FLAGS) -I$(ECC_DIR) -DNSS_ECC_MORE_THAN_SUITE_B
2N/A
2N/A# MPI -- needed by ECC
2N/AMPI_DIR = $(SRC_REL)/common/mpi
2N/AMPI_COMMON_OBJS = mp_gf2m.o mpi.o mplogic.o mpmontg.o
2N/AMPI_COMMON_SRC = $(MPI_COMMON_OBJS:%.o=$(MPI_DIR)/%.c)
2N/AMPI_FLAGS = -I$(MPI_DIR) -DMP_API_COMPATIBLE
2N/A
2N/A# RSA
2N/ARSA_DIR = $(SRC_REL)/common/crypto/rsa
2N/ARSA_COMMON_OBJS = rsa_impl.o
2N/ARSA_COMMON_SRC = $(RSA_COMMON_OBJS:%.o=$(RSA_DIR)/%.c)
2N/ARSA_FLAGS = $(BIGNUM_FLAGS) -I$(RSA_DIR)
2N/A
2N/A# PADDING -- needed by RSA
2N/APAD_DIR = $(SRC_REL)/common/crypto/padding
2N/APAD_COMMON_OBJS = pkcs1.o pkcs7.o
2N/APAD_COMMON_SRC = $(PAD_COMMON_OBJS:%.o=$(PAD_DIR)/%.c)
2N/APAD_FLAGS = -I$(PAD_DIR)
2N/A
2N/A# libsoftcrypto common (ucrypto api)
2N/AUCRYPTO_COMMON_OBJS = crypt.o mechstr.o
2N/AUCRYPTO_COMMON_SRC = $(UCRYPTO_COMMON_OBJS:%.o=$(SRCDIR)/%.c)
2N/AUCRYPTO_FLAGS = -xO5 -xbuiltin=%all -I$(SRCDIR)
2N/A
2N/A# FIPS-140 changes
2N/AFIPS_DIR = $(SRC_REL)/common/crypto/fips
2N/ASOFTTOKENDIR = $(SRC_REL)/lib/pkcs11/pkcs11_softtoken/common
2N/AFIPS_COMMON_OBJS = fips_rsa_util.o fips_aes_util.o fips_sha1_util.o \
2N/A fips_sha2_util.o fips_test_vectors.o
2N/AFIPS_COMMON_SRC = $(FIPS_COMMON_OBJS:%.o=$(FIPS_DIR)/%.c)
2N/AFIPS_FLAGS = -I$(FIPS_DIR) -I$(SOFTTOKENDIR)
2N/A
2N/A### All the objects
2N/A
2N/A# Bring in platform-specific objects if any
2N/AAES_OBJS = $(AES_COMMON_OBJS) $(AES_PSM_OBJS)
2N/AARCFOUR_OBJS = $(ARCFOUR_COMMON_OBJS) $(ARCFOUR_PSM_OBJS)
2N/ABLOWFISH_OBJS = $(BLOWFISH_COMMON_OBJS) $(BLOWFISH_PSM_OBJS)
2N/ADES_OBJS = $(DES_COMMON_OBJS) $(DES_PSM_OBJS)
2N/ABIGNUM_OBJS = $(BIGNUM_COMMON_OBJS) $(BIGNUM_PSM_OBJS)
2N/AMODES_OBJS = $(MODES_COMMON_OBJS) $(MODES_PSM_OBJS)
2N/ADH_OBJS = $(DH_COMMON_OBJS) $(DH_PSM_OBJS)
2N/ADSA_OBJS = $(DSA_COMMON_OBJS) $(DSA_PSM_OBJS)
2N/AECC_OBJS = $(ECC_COMMON_OBJS) $(ECC_PSM_OBJS)
2N/AMPI_OBJS = $(MPI_COMMON_OBJS) $(MPI_PSM_OBJS)
2N/ARSA_OBJS = $(RSA_COMMON_OBJS) $(RSA_PSM_OBJS)
2N/APAD_OBJS = $(PAD_COMMON_OBJS) $(PAD_PSM_OBJS)
2N/AUCRYPTO_OBJS = $(UCRYPTO_COMMON_OBJS)
2N/AFIPS_OBJS = $(FIPS_COMMON_OBJS)
2N/A
2N/AOBJECTS = $(AES_OBJS) $(ARCFOUR_OBJS) $(BIGNUM_OBJS) \
2N/A $(BLOWFISH_OBJS) $(DES_OBJS) $(MODES_OBJS) \
2N/A $(DH_OBJS) $(DSA_OBJS) $(ECC_OBJS) $(MPI_OBJS) \
2N/A $(RSA_OBJS) $(PAD_OBJS) $(UCRYPTO_OBJS) $(FIPS_OBJS)
2N/A
2N/A### All the sources
2N/A
2N/A# Bring in platform-specific objects if any
2N/AAES_SRC = $(AES_COMMON_SRC) $(AES_PSM_SRC)
2N/AARCFOUR_SRC = $(ARCFOUR_COMMON_SRC) $(ARCFOUR_PSM_SRC)
2N/ABLOWFISH_SRC = $(BLOWFISH_COMMON_SRC) $(BLOWFISH_PSM_SRC)
2N/ADES_SRC = $(DES_COMMON_SRC) $(DES_PSM_SRC)
2N/ABIGNUM_SRC = $(BIGNUM_COMMON_SRC) $(BIGNUM_PSM_SRC)
2N/AMODES_SRC = $(MODES_COMMON_SRC) $(MODES_PSM_SRC)
2N/ADH_SRC = $(DH_COMMON_SRC) $(DH_PSM_SRC)
2N/ADSA_SRC = $(DSA_COMMON_SRC) $(DSA_PSM_SRC)
2N/AECC_SRC = $(ECC_COMMON_SRC) $(ECC_PSM_SRC)
2N/AMPI_SRC = $(MPI_COMMON_SRC) $(MPI_PSM_SRC)
2N/ARSA_SRC = $(RSA_COMMON_SRC) $(RSA_PSM_SRC)
2N/APAD_SRC = $(PAD_COMMON_SRC) $(PAD_PSM_SRC)
2N/AUCRYPTO_SRC = $(UCRYPTO_COMMON_SRC)
2N/AFIPS_SRC = $(FIPS_COMMON_SRC)
2N/A
2N/A### Make it so that consumer Makefiles just need to include this file.
2N/A
2N/Ainclude $(SRC)/lib/Makefile.lib
2N/A
2N/ALIBS = $(DYNLIB) $(LINTLIB)
2N/ASRCS = $(AES_SRC) $(ARCFOUR_SRC) $(BIGNUM_SRC) \
2N/A $(BLOWFISH_SRC) $(DES_SRC) $(MODES_SRC) \
2N/A $(DH_SRC) $(DSA_SRC) $(ECC_SRC) $(MPI_SRC) \
2N/A $(RSA_SRC) $(PAD_SRC) $(UCRYPTO_SRC) $(FIPS_SRC)
2N/A
2N/A### All the commonly shared flags
2N/A
2N/A# ECC and MPI currently do not lint, do not include them in lint targets
2N/AEXTRA_LINT_FLAGS = $(AES_FLAGS) $(BLOWFISH_FLAGS) $(ARCFOUR_FLAGS) \
2N/A $(DES_FLAGS) $(BIGNUM_FLAGS) $(MODES_FLAGS) \
2N/A $(DH_FLAGS) $(DSA_FLAGS) $(RSA_FLAGS) $(PAD_FLAGS) $(FIPS_FLAGS)
2N/ALINTABLE = $(AES_SRC) $(ARCFOUR_SRC) $(BIGNUM_SRC) \
2N/A $(BLOWFISH_SRC) $(DES_SRC) $(MODES_SRC) \
2N/A $(DH_SRC) $(DSA_SRC) $(RSA_SRC) $(PAD_SRC) \
2N/A $(UCRYPTO_SRC) $(FIPS_SRC)
2N/A$(LINTLIB) lintcheck lint := SRCS = $(LINTABLE)
2N/A
2N/A# Common source and header directories and flags shared by entire module
2N/ASRCDIR = $(SRC_REL)/lib/libsoftcrypto/common
2N/ACRYPTODIR = $(SRC_REL)/common/crypto
2N/AUTSDIR = $(SRC_REL)/uts/common/
2N/A
2N/A# The following objects are unused. Refer to comments in Makefile.master.
2N/AUNUSEDECCOBJS = ecp_384.o ec2_test.o ecp_test.o
2N/AUNUSEDMPIOBJS = mpprime.o
2N/AUNUSEDFILES = $(UNUSEDECCOBJS:%.o=$(ECC_DIR)/%.c) \
2N/A $(UNUSEDMPIOBJS:%.o=$(MPI_DIR)/%.c)
2N/APOST_PROCESS_SO += $(ACCESS_UNUSEDFILES)
2N/A
2N/A# Clear -xspace/$SPACEFLAG due to SS12 compiler loop-unrolling bug that
2N/A# results in loss of performance on 32-bit x86. Overriding the compiler
2N/A# option here clears it for x86 platform-specific capabilities also.
2N/Ai386_SPACEFLAG =
2N/A
2N/ACFLAGS += $(CCVERBOSE)
2N/ACPPFLAGS += -I$(SRCDIR) -I$(BIGNUM_DIR) -I$(CRYPTODIR) -I$(UTSDIR) \
2N/A -D_POSIX_PTHREAD_SEMANTICS
2N/A
2N/AC99MODE = -xc99=%all
2N/AC99LMODE = -Xc99=%all
2N/A
2N/AASFLAGS += $(AS_PICFLAGS) -P
2N/AAS_CPPFLAGS += -D__STDC__ -D_ASM -DPIC -D_REENTRANT -D$(MACH)
2N/A
2N/ALINTFLAGS += $(EXTRA_LINT_FLAGS)
2N/ALINTFLAGS64 += $(EXTRA_LINT_FLAGS)
2N/A
2N/ALDLIBS += -lmd -lcryptoutil -lc
2N/A
2N/A#
2N/A# Add FIPS-140 Checksum
2N/A#
2N/APOST_PROCESS_SO += ; $(FIPS140_CHECKSUM)