1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License (the "License").
   6 # You may not use this file except in compliance with the License.
   7 #
   8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9 # or http://www.opensolaris.org/os/licensing.
  10 # See the License for the specific language governing permissions
  11 # and limitations under the License.
  12 #
  13 # When distributing Covered Code, include this CDDL HEADER in each
  14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15 # If applicable, add the following below this CDDL HEADER, with the
  16 # fields enclosed by brackets "[]" replaced with your own identifying
  17 # information: Portions Copyright [yyyy] [name of copyright owner]
  18 #
  19 # CDDL HEADER END
  20 #
  21 #
  22 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  23 # Use is subject to license terms.
  24 #
  25 # ident "@(#)Makefile.com       1.6     08/03/20 SMI"
  26 #
  27 # lib/pkcs11/pkcs11_softtoken/Makefile.com
  28 #
  29 
  30 LIBRARY = pkcs11_softtoken.a
  31 VERS= .1
  32 
  33 LCL_OBJECTS = \
  34         softGeneral.o           \
  35         softSlotToken.o         \
  36         softSession.o           \
  37         softObject.o            \
  38         softDigest.o            \
  39         softSign.o              \
  40         softVerify.o            \
  41         softDualCrypt.o         \
  42         softKeys.o              \
  43         softRand.o              \
  44         softSessionUtil.o       \
  45         softDigestUtil.o        \
  46         softAttributeUtil.o     \
  47         softObjectUtil.o        \
  48         softDESCrypt.o          \
  49         softEncrypt.o           \
  50         softDecrypt.o           \
  51         softEncryptUtil.o       \
  52         softDecryptUtil.o       \
  53         softSignUtil.o          \
  54         softVerifyUtil.o        \
  55         softMAC.o               \
  56         softRSA.o               \
  57         softRandUtil.o          \
  58         softKeysUtil.o          \
  59         softARCFourCrypt.o      \
  60         softDSA.o               \
  61         softDH.o                \
  62         softAESCrypt.o          \
  63         softCrypt.o             \
  64         softKeystore.o          \
  65         softKeystoreUtil.o      \
  66         softSSL.o               \
  67         softASN1.o              \
  68         softBlowfishCrypt.o     \
  69         softEC.o
  70 
  71 ASFLAGS = $(AS_PICFLAGS) -P -D__STDC__ -D_ASM $(CPPFLAGS)
  72 
  73 AES_COBJECTS = aes_cbc_crypt.o  aes_impl.o
  74 BLOWFISH_COBJECTS = blowfish_cbc_crypt.o blowfish_impl.o
  75 ARCFOUR_COBJECTS = arcfour_crypt.o
  76 DES_COBJECTS = des_cbc_crypt.o des_impl.o des_ks.o
  77 
  78 ECC_COBJECTS = \
  79         ec.o ec2_163.o ec2_mont.o ecdecode.o ecl_mult.o ecp_384.o \
  80         ecp_jac.o ec2_193.o ecl.o ecp_192.o ecp_521.o \
  81         ecp_jm.o ec2_233.o ecl_curve.o ecp_224.o ecp_aff.o ecp_mont.o \
  82         ec2_aff.o ec_naf.o ecl_gf.o ecp_256.o oid.o secitem.o \
  83         ec2_test.o ecp_test.o
  84 
  85 MPI_COBJECTS = mp_gf2m.o mpi.o mplogic.o mpmontg.o mpprime.o
  86 
  87 RSA_COBJECTS = rsa_impl.o
  88 BIGNUM_COBJECTS = bignumimpl.o
  89 
  90 AES_OBJECTS = $(AES_COBJECTS) $(AES_PSR_OBJECTS)
  91 BLOWFISH_OBJECTS = $(BLOWFISH_COBJECTS) $(BLOWFISH_PSR_OBJECTS)
  92 ARCFOUR_OBJECTS = $(ARCFOUR_COBJECTS) $(ARCFOUR_PSR_OBJECTS)
  93 DES_OBJECTS = $(DES_COBJECTS) $(DES_PSR_OBJECTS)
  94 
  95 ECC_OBJECTS = $(ECC_COBJECTS) $(ECC_PSR_OBJECTS)
  96 MPI_OBJECTS = $(MPI_COBJECTS) $(MPI_PSR_OBJECTS)
  97 RSA_OBJECTS = $(RSA_COBJECTS) $(RSA_PSR_OBJECTS)
  98 BIGNUM_OBJECTS = $(BIGNUM_COBJECTS) $(BIGNUM_PSR_OBJECTS)
  99 
 100 BER_OBJECTS = bprint.o decode.o encode.o io.o
 101 
 102 # Sparc userland uses a floating-point implementation of
 103 # Montgomery multiply.  So, USE_FLOATING_POINT is defined here
 104 # for Sparc targets.
 105 #
 106 # x86 does not use floating-point for the kernel or userland.
 107 #
 108 # Sparc has only one integer implementation of big_mul_add_vec()
 109 # and friends, so these functions are called directly.
 110 # So, HWCAP (HardWare CAPabilities) is not defined for Sparc.
 111 #
 112 # x86 has multiple integer implementations to choose from.
 113 # Hardware features are tested at run time, just once,
 114 # on first use.  So, big_mul_add_vec() and friends must be
 115 # called through a function pointer.
 116 #
 117 # AMD64 has a 64x64->128 bit multiply instruction, which makes
 118 # things even faster than i386 SSE2 instructions.  Since there
 119 # is no run-time testing of features, as there is for SSE2,
 120 # there is no need to call big_mul_add_vec() and friends through
 121 # functions pointers, and so HWCAP is not defined.
 122 #
 123 # For now i386 and amd64 use the C code version of mont_mulf
 124 
 125 OBJECTS = \
 126         $(LCL_OBJECTS)          \
 127         $(AES_OBJECTS)          \
 128         $(BLOWFISH_OBJECTS)     \
 129         $(ARCFOUR_OBJECTS)      \
 130         $(DES_OBJECTS)          \
 131         $(MPI_OBJECTS)          \
 132         $(RSA_OBJECTS)          \
 133         $(BIGNUM_OBJECTS)       \
 134         $(BER_OBJECTS)          \
 135         $(ECC_OBJECTS)
 136 
 137 AESDIR=         $(SRC)/common/crypto/aes
 138 BLOWFISHDIR=    $(SRC)/common/crypto/blowfish
 139 ARCFOURDIR=     $(SRC)/common/crypto/arcfour
 140 DESDIR=         $(SRC)/common/crypto/des
 141 ECCDIR=         $(SRC)/common/crypto/ecc
 142 MPIDIR=         $(SRC)/common/mpi
 143 RSADIR=         $(SRC)/common/crypto/rsa
 144 BIGNUMDIR=      $(SRC)/common/bignum
 145 BERDIR=         ../../../libldap5/sources/ldap/ber
 146 
 147 include $(SRC)/lib/Makefile.lib
 148 
 149 #       set signing mode
 150 POST_PROCESS_SO +=      ; $(ELFSIGN_CRYPTO)
 151 
 152 SRCDIR= ../common
 153 
 154 SRCS =  \
 155         $(LCL_OBJECTS:%.o=$(SRCDIR)/%.c) \
 156         $(AES_COBJECTS:%.o=$(AESDIR)/%.c) \
 157         $(BLOWFISH_COBJECTS:%.o=$(BLOWFISHDIR)/%.c) \
 158         $(ARCFOUR_COBJECTS:%.o=$(ARCFOURDIR)/%.c) \
 159         $(DES_COBJECTS:%.o=$(DESDIR)/%.c) \
 160         $(MPI_COBJECTS:%.o=$(MPIDIR)/%.c) \
 161         $(RSA_COBJECTS:%.o=$(RSADIR)/%.c) \
 162         $(BIGNUM_COBJECTS:%.o=$(BIGNUMDIR)/%.c) \
 163         $(BIGNUM_PSR_SRCS) \
 164         $(ECC_COBJECTS:%.o=$(ECCDIR)/%.c)
 165 
 166 # libelfsign needs a static pkcs11_softtoken
 167 LIBS    =       $(DYNLIB)
 168 LDLIBS  +=      -lc -lmd -lcryptoutil
 169 
 170 CFLAGS  +=      $(CCVERBOSE)
 171 CPPFLAGS += -I$(AESDIR) -I$(BLOWFISHDIR) -I$(ARCFOURDIR) -I$(DESDIR) \
 172             -I$(ECCDIR) -I$(MPIDIR) -I$(RSADIR) -I$(SRCDIR) -I$(BIGNUMDIR) \
 173             -D_POSIX_PTHREAD_SEMANTICS -DMP_API_COMPATIBLE \
 174             -DNSS_ECC_MORE_THAN_SUITE_B
 175 
 176 LINTFLAGS64 += -errchk=longptr64
 177 
 178 ROOTLIBDIR=     $(ROOT)/usr/lib/security
 179 ROOTLIBDIR64=   $(ROOT)/usr/lib/security/$(MACH64)
 180 
 181 LINTSRC = \
 182         $(LCL_OBJECTS:%.o=$(SRCDIR)/%.c) \
 183         $(AES_COBJECTS:%.o=$(AESDIR)/%.c) \
 184         $(BLOWFISH_COBJECTS:%.o=$(BLOWFISHDIR)/%.c) \
 185         $(ARCFOUR_COBJECTS:%.o=$(ARCFOURDIR)/%.c) \
 186         $(DES_COBJECTS:%.o=$(DESDIR)/%.c) \
 187         $(RSA_COBJECTS:%.o=$(RSADIR)/%.c) \
 188         $(BIGNUM_COBJECTS:%.o=$(BIGNUMDIR)/%.c) \
 189         $(BIGNUM_PSR_SRCS)
 190 
 191 .KEEP_STATE:
 192 
 193 all:    $(LIBS)
 194 
 195 lint:   $$(LINTSRC)
 196         $(LINT.c) $(LINTCHECKFLAGS) $(LINTSRC) $(LDLIBS)
 197 
 198 pics/%.o:       $(AESDIR)/%.c
 199         $(COMPILE.c) -o $@ $<
 200         $(POST_PROCESS_O)
 201 
 202 pics/%.o:       $(BLOWFISHDIR)/%.c
 203         $(COMPILE.c) -o $@ $<
 204         $(POST_PROCESS_O)
 205 
 206 pics/%.o:       $(ARCFOURDIR)/%.c
 207         $(COMPILE.c) -o $@ $<
 208         $(POST_PROCESS_O)
 209 
 210 pics/%.o:       $(DESDIR)/%.c
 211         $(COMPILE.c) -o $@ $<
 212         $(POST_PROCESS_O)
 213 
 214 pics/%.o:       $(ECCDIR)/%.c
 215         $(COMPILE.c) -o $@ $<
 216         $(POST_PROCESS_O)
 217 
 218 pics/%.o:       $(MPIDIR)/%.c
 219         $(COMPILE.c) -o $@ $<
 220         $(POST_PROCESS_O)
 221 
 222 pics/%.o:       $(RSADIR)/%.c
 223         $(COMPILE.c) -o $@ $<
 224         $(POST_PROCESS_O)
 225 
 226 pics/%.o:       $(BIGNUMDIR)/%.c
 227         $(COMPILE.c) -o $@ $(BIGNUM_CFG) $<
 228         $(POST_PROCESS_O)
 229 
 230 pics/%.o:       $(BERDIR)/%.c
 231         $(COMPILE.c) -o $@ $< -D_SOLARIS_SDK -I$(BERDIR) \
 232                 -I../../../libldap5/include/ldap
 233         $(POST_PROCESS_O)
 234 
 235 include $(SRC)/lib/Makefile.targ