Print this page
6665607 Need a SHA256/SHA384/SHA512 implementation optimized for 64-bit x86


   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.5     08/02/26 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        \


  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 SHA1_OBJECTS = $(SHA1_COBJECTS) $(SHA1_PSR_OBJECTS)
  99 SHA2_OBJECTS = $(SHA2_COBJECTS) $(SHA2_PSR_OBJECTS)
 100 BIGNUM_OBJECTS = $(BIGNUM_COBJECTS) $(BIGNUM_PSR_OBJECTS)
 101 
 102 BER_OBJECTS = bprint.o decode.o encode.o io.o
 103 
 104 # Sparc userland uses a floating-point implementation of
 105 # Montgomery multiply.  So, USE_FLOATING_POINT is defined here
 106 # for Sparc targets.
 107 #
 108 # x86 does not use floating-point for the kernel or userland.
 109 #
 110 # Sparc has only one integer implementation of big_mul_add_vec()
 111 # and friends, so these functions are called directly.
 112 # So, HWCAP (HardWare CAPabilities) is not defined for Sparc.
 113 #
 114 # x86 has multiple integer implementations to choose from.
 115 # Hardware features are tested at run time, just once,
 116 # on first use.  So, big_mul_add_vec() and friends must be
 117 # called through a function pointer.
 118 #
 119 # AMD64 has a 64x64->128 bit multiply instruction, which makes
 120 # things even faster than i386 SSE2 instructions.  Since there
 121 # is no run-time testing of features, as there is for SSE2,
 122 # there is no need to call big_mul_add_vec() and friends through
 123 # functions pointers, and so HWCAP is not defined.
 124 #
 125 # For now i386 and amd64 use the C code version of mont_mulf
 126 
 127 OBJECTS = \
 128         $(LCL_OBJECTS)          \
 129         $(AES_OBJECTS)          \
 130         $(BLOWFISH_OBJECTS)     \
 131         $(ARCFOUR_OBJECTS)      \
 132         $(DES_OBJECTS)          \
 133         $(MPI_OBJECTS)          \
 134         $(RSA_OBJECTS)          \
 135         $(SHA1_OBJECTS)         \
 136         $(SHA2_OBJECTS)         \
 137         $(BIGNUM_OBJECTS)       \
 138         $(BER_OBJECTS)          \
 139         $(ECC_OBJECTS)
 140 
 141 AESDIR=         $(SRC)/common/crypto/aes
 142 BLOWFISHDIR=    $(SRC)/common/crypto/blowfish
 143 ARCFOURDIR=     $(SRC)/common/crypto/arcfour
 144 DESDIR=         $(SRC)/common/crypto/des
 145 ECCDIR=         $(SRC)/common/crypto/ecc
 146 MPIDIR=         $(SRC)/common/mpi
 147 RSADIR=         $(SRC)/common/crypto/rsa
 148 BIGNUMDIR=      $(SRC)/common/bignum
 149 BERDIR=         ../../../libldap5/sources/ldap/ber
 150 
 151 include $(SRC)/lib/Makefile.lib
 152 
 153 #       set signing mode
 154 POST_PROCESS_SO +=      ; $(ELFSIGN_CRYPTO)
 155 
 156 SRCDIR= ../common
 157 
 158 SRCS =  \
 159         $(LCL_OBJECTS:%.o=$(SRCDIR)/%.c) \
 160         $(AES_COBJECTS:%.o=$(AESDIR)/%.c) \
 161         $(BLOWFISH_COBJECTS:%.o=$(BLOWFISHDIR)/%.c) \
 162         $(ARCFOUR_COBJECTS:%.o=$(ARCFOURDIR)/%.c) \
 163         $(DES_COBJECTS:%.o=$(DESDIR)/%.c) \
 164         $(MPI_COBJECTS:%.o=$(MPIDIR)/%.c) \
 165         $(RSA_COBJECTS:%.o=$(RSADIR)/%.c) \
 166         $(SHA1_COBJECTS:%.o=$(SHA1DIR)/%.c) \
 167         $(SHA2_COBJECTS:%.o=$(SHA2DIR)/%.c) \
 168         $(BIGNUM_COBJECTS:%.o=$(BIGNUMDIR)/%.c) \
 169         $(BIGNUM_PSR_SRCS) \
 170         $(ECC_COBJECTS:%.o=$(ECCDIR)/%.c)
 171 
 172 # libelfsign needs a static pkcs11_softtoken
 173 LIBS    =       $(DYNLIB)
 174 LDLIBS  +=      -lc -lmd -lcryptoutil
 175 
 176 CFLAGS  +=      $(CCVERBOSE)
 177 CPPFLAGS += -I$(AESDIR) -I$(BLOWFISHDIR) -I$(ARCFOURDIR) -I$(DESDIR) \
 178             -I$(ECCDIR) -I$(MPIDIR) -I$(RSADIR) -I$(SRCDIR) -I$(BIGNUMDIR) \
 179             -D_POSIX_PTHREAD_SEMANTICS -DMP_API_COMPATIBLE \
 180             -DNSS_ECC_MORE_THAN_SUITE_B
 181 
 182 LINTFLAGS64 += -errchk=longptr64
 183 
 184 ROOTLIBDIR=     $(ROOT)/usr/lib/security
 185 ROOTLIBDIR64=   $(ROOT)/usr/lib/security/$(MACH64)
 186 
 187 LINTSRC = \
 188         $(LCL_OBJECTS:%.o=$(SRCDIR)/%.c) \
 189         $(AES_COBJECTS:%.o=$(AESDIR)/%.c) \
 190         $(BLOWFISH_COBJECTS:%.o=$(BLOWFISHDIR)/%.c) \
 191         $(ARCFOUR_COBJECTS:%.o=$(ARCFOURDIR)/%.c) \
 192         $(DES_COBJECTS:%.o=$(DESDIR)/%.c) \
 193         $(RSA_COBJECTS:%.o=$(RSADIR)/%.c) \
 194         $(SHA1_COBJECTS:%.o=$(SHA1DIR)/%.c) \
 195         $(SHA2_COBJECTS:%.o=$(SHA2DIR)/%.c) \
 196         $(BIGNUM_COBJECTS:%.o=$(BIGNUMDIR)/%.c) \
 197         $(BIGNUM_PSR_SRCS)
 198 
 199 .KEEP_STATE:
 200 
 201 all:    $(LIBS)
 202 
 203 lint:   $$(LINTSRC)
 204         $(LINT.c) $(LINTCHECKFLAGS) $(LINTSRC) $(LDLIBS)
 205 
 206 pics/%.o:       $(AESDIR)/%.c
 207         $(COMPILE.c) -o $@ $<
 208         $(POST_PROCESS_O)
 209 
 210 pics/%.o:       $(BLOWFISHDIR)/%.c
 211         $(COMPILE.c) -o $@ $<
 212         $(POST_PROCESS_O)
 213 
 214 pics/%.o:       $(ARCFOURDIR)/%.c
 215         $(COMPILE.c) -o $@ $<
 216         $(POST_PROCESS_O)
 217 
 218 pics/%.o:       $(DESDIR)/%.c
 219         $(COMPILE.c) -o $@ $<
 220         $(POST_PROCESS_O)
 221 
 222 pics/%.o:       $(ECCDIR)/%.c
 223         $(COMPILE.c) -o $@ $<
 224         $(POST_PROCESS_O)
 225 
 226 pics/%.o:       $(MPIDIR)/%.c
 227         $(COMPILE.c) -o $@ $<
 228         $(POST_PROCESS_O)
 229 
 230 pics/%.o:       $(RSADIR)/%.c
 231         $(COMPILE.c) -o $@ $<
 232         $(POST_PROCESS_O)
 233 
 234 pics/%.o:       $(SHA1DIR)/%.c
 235         $(COMPILE.c) -o $@ $<
 236         $(POST_PROCESS_O)
 237 
 238 pics/%.o:       $(SHA2DIR)/%.c
 239         $(COMPILE.c) -o $@ $<
 240         $(POST_PROCESS_O)
 241 
 242 pics/%.o:       $(BIGNUMDIR)/%.c
 243         $(COMPILE.c) -o $@ $(BIGNUM_CFG) $<
 244         $(POST_PROCESS_O)
 245 
 246 pics/%.o:       $(BERDIR)/%.c
 247         $(COMPILE.c) -o $@ $< -D_SOLARIS_SDK -I$(BERDIR) \
 248                 -I../../../libldap5/include/ldap
 249         $(POST_PROCESS_O)
 250 
 251 include $(SRC)/lib/Makefile.targ


   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/05 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        \


  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