101a9c323SSean BrunoSHLIBDIR?= /lib 201a9c323SSean Bruno 3c91575ceSAlex Richardson.include <src.opts.mk> 471bf1c4cSAndrew Turner.include <bsd.compiler.mk> 5c91575ceSAlex Richardson 6a7b5a3d4SEmmanuel VadotPACKAGE= runtime 7c9502b53SPoul-Henning KampLIB= md 8e7a629c8SKyle EvansSHLIB_MAJOR= 7 99b9c3018SDavid E. O'BrienSRCS= md4c.c md5c.c md4hl.c md5hl.c \ 10d00ed299SGarrett Wollman rmd160c.c rmd160hl.c \ 11186c183cSColin Percival sha0c.c sha0hl.c sha1c.c sha1hl.c \ 128ff3cdd1SConrad Meyer sha224hl.c sha256c.c sha256hl.c \ 137a3f5d11SAllan Jude sha384hl.c \ 142768d705SDag-Erling Smørgrav sha512c.c sha512hl.c sha512t224hl.c sha512t256hl.c \ 15b468a9ffSAllan Jude skein.c skein_block.c \ 16b468a9ffSAllan Jude skein256hl.c skein512hl.c skein1024hl.c 178ff3cdd1SConrad MeyerINCS= md4.h md5.h ripemd.h sha.h sha224.h sha256.h sha384.h sha512.h \ 188ff3cdd1SConrad Meyer sha512t.h skein.h skein_port.h skein_freebsd.h skein_iv.h 19d05257b0SRodney W. Grimes 2025316863SMark JohnstonWARNS?= 0 21daaf5759SEd Schouten 22e25527f7SKyle EvansVERSION_DEF= ${SRCTOP}/lib/libc/Versions.def 23e25527f7SKyle EvansSYMBOL_MAPS= ${.CURDIR}/Symbol.map 24e25527f7SKyle Evans 25b468a9ffSAllan JudeMAN+= md4.3 md5.3 ripemd.3 sha.3 sha256.3 sha512.3 skein.3 2605f65b29SPoul-Henning KampMLINKS+=md4.3 MD4Init.3 md4.3 MD4Update.3 md4.3 MD4Final.3 278a24546cSPoul-Henning KampMLINKS+=md4.3 MD4End.3 md4.3 MD4File.3 md4.3 MD4FileChunk.3 288a24546cSPoul-Henning KampMLINKS+=md4.3 MD4Data.3 2905f65b29SPoul-Henning KampMLINKS+=md5.3 MD5Init.3 md5.3 MD5Update.3 md5.3 MD5Final.3 308a24546cSPoul-Henning KampMLINKS+=md5.3 MD5End.3 md5.3 MD5File.3 md5.3 MD5FileChunk.3 318a24546cSPoul-Henning KampMLINKS+=md5.3 MD5Data.3 325365c4e7SAndrey A. ChernovMLINKS+=ripemd.3 RIPEMD160_Init.3 ripemd.3 RIPEMD160_Update.3 335365c4e7SAndrey A. ChernovMLINKS+=ripemd.3 RIPEMD160_Final.3 ripemd.3 RIPEMD160_Data.3 345365c4e7SAndrey A. ChernovMLINKS+=ripemd.3 RIPEMD160_End.3 ripemd.3 RIPEMD160_File.3 358a24546cSPoul-Henning KampMLINKS+=ripemd.3 RIPEMD160_FileChunk.3 365365c4e7SAndrey A. ChernovMLINKS+=sha.3 SHA_Init.3 sha.3 SHA_Update.3 sha.3 SHA_Final.3 378a24546cSPoul-Henning KampMLINKS+=sha.3 SHA_End.3 sha.3 SHA_File.3 sha.3 SHA_FileChunk.3 388a24546cSPoul-Henning KampMLINKS+=sha.3 SHA_Data.3 395365c4e7SAndrey A. ChernovMLINKS+=sha.3 SHA1_Init.3 sha.3 SHA1_Update.3 sha.3 SHA1_Final.3 408a24546cSPoul-Henning KampMLINKS+=sha.3 SHA1_End.3 sha.3 SHA1_File.3 sha.3 SHA1_FileChunk.3 418a24546cSPoul-Henning KampMLINKS+=sha.3 SHA1_Data.3 428ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_Init.3 sha256.3 SHA224_Update.3 438ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_Final.3 sha256.3 SHA224_End.3 448ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_File.3 sha256.3 SHA224_FileChunk.3 458ff3cdd1SConrad MeyerMLINKS+=sha256.3 SHA224_Data.3 46186c183cSColin PercivalMLINKS+=sha256.3 SHA256_Init.3 sha256.3 SHA256_Update.3 47186c183cSColin PercivalMLINKS+=sha256.3 SHA256_Final.3 sha256.3 SHA256_End.3 48186c183cSColin PercivalMLINKS+=sha256.3 SHA256_File.3 sha256.3 SHA256_FileChunk.3 49186c183cSColin PercivalMLINKS+=sha256.3 SHA256_Data.3 507a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_Init.3 sha512.3 SHA384_Update.3 517a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_Final.3 sha512.3 SHA384_End.3 527a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_File.3 sha512.3 SHA384_FileChunk.3 537a3f5d11SAllan JudeMLINKS+=sha512.3 SHA384_Data.3 sha512.3 sha384.3 543b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_Init.3 sha512.3 SHA512_Update.3 553b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_Final.3 sha512.3 SHA512_End.3 563b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_File.3 sha512.3 SHA512_FileChunk.3 573b50f6bfSMark MurrayMLINKS+=sha512.3 SHA512_Data.3 582768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_Init.3 sha512.3 SHA512_224_Update.3 592768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_Final.3 sha512.3 SHA512_224_End.3 602768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_File.3 sha512.3 SHA512_224_FileChunk.3 612768d705SDag-Erling SmørgravMLINKS+=sha512.3 SHA512_224_Data.3 621780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_Init.3 sha512.3 SHA512_256_Update.3 631780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_Final.3 sha512.3 SHA512_256_End.3 641780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_File.3 sha512.3 SHA512_256_FileChunk.3 651780e407SAllan JudeMLINKS+=sha512.3 SHA512_256_Data.3 66b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_Init.3 skein.3 SKEIN256_Update.3 67b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_Final.3 skein.3 SKEIN256_End.3 68b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_File.3 skein.3 SKEIN256_FileChunk.3 69b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN256_Data.3 skein.3 skein256.3 70b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_Init.3 skein.3 SKEIN512_Update.3 71b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_Final.3 skein.3 SKEIN512_End.3 72b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_File.3 skein.3 SKEIN512_FileChunk.3 73b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN512_Data.3 skein.3 skein512.3 74b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_Init.3 skein.3 SKEIN1024_Update.3 75b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_Final.3 skein.3 SKEIN1024_End.3 76b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_File.3 skein.3 SKEIN1024_FileChunk.3 77b468a9ffSAllan JudeMLINKS+=skein.3 SKEIN1024_Data.3 skein.3 skein1024.3 78b468a9ffSAllan Jude 79c177a86bSGarrett WollmanCLEANFILES+= md[245]hl.c md[245].ref md[245].3 mddriver \ 80d00ed299SGarrett Wollman rmd160.ref rmd160hl.c rmddriver \ 81186c183cSColin Percival sha0.ref sha0hl.c sha1.ref sha1hl.c shadriver \ 828ff3cdd1SConrad Meyer sha224.ref sha256.ref sha224hl.c sha256hl.c \ 838ff3cdd1SConrad Meyer sha384hl.c sha384.ref \ 842768d705SDag-Erling Smørgrav sha512.ref sha512hl.c \ 852768d705SDag-Erling Smørgrav sha512t224.ref sha512t224hl.c \ 862768d705SDag-Erling Smørgrav sha512t256.ref sha512t256hl.c \ 87b468a9ffSAllan Jude skein256hl.c skein512hl.c skein1024hl.c \ 88b468a9ffSAllan Jude skein256.ref skein512.ref skein1024.ref \ 89b468a9ffSAllan Jude skeindriver 903b50f6bfSMark Murray 91a1b9cad5SBryan Drewery# Need src tree sys/md5.h for MD5FileChunk prototype on older systems. 92a1b9cad5SBryan DrewerySRCS+= sys/md5.h 93a1b9cad5SBryan DreweryCLEANDIRS= sys 94a1b9cad5SBryan DreweryCFLAGS+= -I. 95a1b9cad5SBryan Drewerysys/md5.h: ${SRCTOP}/sys/${.TARGET} .NOMETA 96a1b9cad5SBryan Drewery ln -sf ${.ALLSRC} ${.TARGET} 97a1b9cad5SBryan Drewery 982dd0a89cSThomas Quinot# Define WEAK_REFS to provide weak aliases for libmd symbols 992dd0a89cSThomas Quinot# 1002dd0a89cSThomas Quinot# Note that the same sources are also used internally by libcrypt, 1012dd0a89cSThomas Quinot# in which case: 1022dd0a89cSThomas Quinot# * macros are used to rename symbols to libcrypt internal names 1032dd0a89cSThomas Quinot# * no weak aliases are generated 10449233baeSEnji CooperCFLAGS+= -I${.CURDIR} -I${SRCTOP}/sys/crypto/sha2 10549233baeSEnji CooperCFLAGS+= -I${SRCTOP}/sys/crypto/skein 1063a6dcb1fSCraig RodriguesCFLAGS+= -DWEAK_REFS 107929b476aSAllan Jude# unroll the 256 and 512 loops, half unroll the 1024 108310e81aeSEd MasteCFLAGS.skein_block.c+= -DSKEIN_LOOP=995 10949233baeSEnji Cooper.PATH: ${.CURDIR}/${MACHINE_ARCH} ${SRCTOP}/sys/crypto/sha2 11049233baeSEnji Cooper.PATH: ${SRCTOP}/sys/crypto/skein ${SRCTOP}/sys/crypto/skein/${MACHINE_ARCH} 11173a9b273SRobert Clausecker.PATH: ${SRCTOP}/sys/crypto 112c9502b53SPoul-Henning Kamp 113078018e0SAlex RichardsonUSE_ASM_SOURCES?=1 11420adba8bSGleb Popov.if defined(BOOTSTRAPPING) || ${MK_MACHDEP_OPTIMIZATIONS} == no 115078018e0SAlex Richardson# Don't build ASM sources when bootstrapping to avoid toolchain dependencies 116078018e0SAlex RichardsonUSE_ASM_SOURCES:=0 117078018e0SAlex Richardson.endif 118078018e0SAlex Richardson 119078018e0SAlex Richardson.if ${USE_ASM_SOURCES} != 0 120*d92e9874SRobert Clausecker.if exists(${MACHINE_ARCH}/md5block.S) 121*d92e9874SRobert ClauseckerSRCS+= md5block.S 122*d92e9874SRobert ClauseckerCFLAGS+= -DMD5_ASM 123*d92e9874SRobert Clausecker.if exists(${MACHINE_ARCH}/md5dispatch.c) 124*d92e9874SRobert ClauseckerSRCS+= md5dispatch.c 125*d92e9874SRobert Clausecker.endif 126*d92e9874SRobert Clausecker.endif 127181a0441SRobert Clausecker.if exists(${MACHINE_ARCH}/sha1block.S) 128181a0441SRobert ClauseckerSRCS+= sha1block.S 129152e60f2SDimitry AndricCFLAGS+= -DSHA1_ASM 1308b4684afSRobert Clausecker.if exists(${MACHINE_ARCH}/sha1dispatch.c) 1318b4684afSRobert ClauseckerSRCS+= sha1dispatch.c 1328b4684afSRobert Clausecker.endif 133c177a86bSGarrett Wollman.endif 134d00ed299SGarrett Wollman.if exists(${MACHINE_ARCH}/rmd160.S) 135d00ed299SGarrett WollmanSRCS+= rmd160.S 136152e60f2SDimitry AndricCFLAGS+= -DRMD160_ASM 137152e60f2SDimitry Andric.endif 13836972ee3SEd Maste.if exists(${MACHINE_ARCH}/skein_block_asm.S) 13936972ee3SEd Maste# Fully unroll all loops in the assembly optimized version 14036972ee3SEd MasteACFLAGS+= -DSKEIN_LOOP=0 14136972ee3SEd MasteSRCS+= skein_block_asm.S 14236972ee3SEd MasteCFLAGS+= -DSKEIN_ASM -DSKEIN_USE_ASM=1792 # list of block functions to replace with assembly: 256+512+1024 = 1792 143da6e5efeSEd Maste# 20201002 Add explict Makefile dependency for r366344 (reenabled assembly 144da6e5efeSEd Maste# optimized version). SKEIN_USE_ASM determines which routines should come from 145da6e5efeSEd Maste# the assembly vs C versions, and skein_block needs to be rebuilt if it changes. 146da6e5efeSEd Masteskein_block.o skein_block.pico: Makefile 14736972ee3SEd Maste.endif 148181a0441SRobert Clausecker.if exists(${MACHINE_ARCH}/rmd160.S) || exists(${MACHINE_ARCH}/skein_block_asm.S) 149152e60f2SDimitry AndricACFLAGS+= -DELF -Wa,--noexecstack 150d00ed299SGarrett Wollman.endif 15169d8dc20SAndrew Turner.if ${MACHINE_CPUARCH} == "aarch64" 15269d8dc20SAndrew TurnerSRCS+= sha256c_arm64.c 153a9472032SAndrew TurnerCFLAGS+= -DARM64_SHA2 15469d8dc20SAndrew TurnerCFLAGS.sha256c_arm64.c+= -march=armv8-a+crypto 15571bf1c4cSAndrew Turner.if ${COMPILER_FEATURES:Maarch64-sha512} 15671bf1c4cSAndrew TurnerSRCS+= sha512c_arm64.c 15771bf1c4cSAndrew TurnerCFLAGS+= -DARM64_SHA512 15871bf1c4cSAndrew TurnerCFLAGS.sha512c_arm64.c+= -march=armv8.2-a+sha3 15971bf1c4cSAndrew Turner.endif # aarch64-sha512 16069d8dc20SAndrew Turner.endif 161078018e0SAlex Richardson.endif # ${USE_ASM_SOURCES} != 0 162c177a86bSGarrett Wollman 163c9502b53SPoul-Henning Kampmd4hl.c: mdXhl.c 164c177a86bSGarrett Wollman (echo '#define LENGTH 16'; \ 165c177a86bSGarrett Wollman sed -e 's/mdX/md4/g' -e 's/MDX/MD4/g' ${.ALLSRC}) > ${.TARGET} 166c9502b53SPoul-Henning Kamp 167c9502b53SPoul-Henning Kampmd5hl.c: mdXhl.c 168c177a86bSGarrett Wollman (echo '#define LENGTH 16'; \ 169c177a86bSGarrett Wollman sed -e 's/mdX/md5/g' -e 's/MDX/MD5/g' ${.ALLSRC}) > ${.TARGET} 170c177a86bSGarrett Wollman 171c177a86bSGarrett Wollmansha0hl.c: mdXhl.c 172c177a86bSGarrett Wollman (echo '#define LENGTH 20'; \ 173c177a86bSGarrett Wollman sed -e 's/mdX/sha/g' -e 's/MDX/SHA_/g' -e 's/SHA__/SHA_/g' \ 174c177a86bSGarrett Wollman ${.ALLSRC}) > ${.TARGET} 175c177a86bSGarrett Wollman 176c177a86bSGarrett Wollmansha1hl.c: mdXhl.c 177c177a86bSGarrett Wollman (echo '#define LENGTH 20'; \ 178c177a86bSGarrett Wollman sed -e 's/mdX/sha/g' -e 's/MDX/SHA1_/g' -e 's/SHA1__/SHA1_/g' \ 179c177a86bSGarrett Wollman ${.ALLSRC}) > ${.TARGET} 180c9502b53SPoul-Henning Kamp 1818ff3cdd1SConrad Meyersha224hl.c: mdXhl.c 1828ff3cdd1SConrad Meyer (echo '#define LENGTH 28'; \ 1838ff3cdd1SConrad Meyer sed -e 's/mdX/sha224/g' -e 's/MDX/SHA224_/g' \ 1848ff3cdd1SConrad Meyer -e 's/SHA224__/SHA224_/g' \ 1858ff3cdd1SConrad Meyer ${.ALLSRC}) > ${.TARGET} 1868ff3cdd1SConrad Meyer 187186c183cSColin Percivalsha256hl.c: mdXhl.c 188186c183cSColin Percival (echo '#define LENGTH 32'; \ 189186c183cSColin Percival sed -e 's/mdX/sha256/g' -e 's/MDX/SHA256_/g' \ 190186c183cSColin Percival -e 's/SHA256__/SHA256_/g' \ 191186c183cSColin Percival ${.ALLSRC}) > ${.TARGET} 192186c183cSColin Percival 1937a3f5d11SAllan Judesha384hl.c: mdXhl.c 1947a3f5d11SAllan Jude (echo '#define LENGTH 48'; \ 1957a3f5d11SAllan Jude sed -e 's/mdX/sha384/g' -e 's/MDX/SHA384_/g' \ 1967a3f5d11SAllan Jude -e 's/SHA384__/SHA384_/g' \ 1977a3f5d11SAllan Jude ${.ALLSRC}) > ${.TARGET} 1987a3f5d11SAllan Jude 1993b50f6bfSMark Murraysha512hl.c: mdXhl.c 2003b50f6bfSMark Murray (echo '#define LENGTH 64'; \ 2013b50f6bfSMark Murray sed -e 's/mdX/sha512/g' -e 's/MDX/SHA512_/g' \ 2023b50f6bfSMark Murray -e 's/SHA512__/SHA512_/g' \ 2033b50f6bfSMark Murray ${.ALLSRC}) > ${.TARGET} 2043b50f6bfSMark Murray 2052768d705SDag-Erling Smørgravsha512t224hl.c: mdXhl.c 2062768d705SDag-Erling Smørgrav (echo '#define LENGTH 28'; \ 2072768d705SDag-Erling Smørgrav sed -e 's/mdX/sha512t/g' -e 's/MDX/SHA512_224_/g' \ 2082768d705SDag-Erling Smørgrav -e 's/SHA512_224__/SHA512_224_/g' \ 2092768d705SDag-Erling Smørgrav -e 's/SHA512_224_CTX/SHA512_CTX/g' \ 2102768d705SDag-Erling Smørgrav ${.ALLSRC}) > ${.TARGET} 2112768d705SDag-Erling Smørgrav 2122768d705SDag-Erling Smørgravsha512t256hl.c: mdXhl.c 2131780e407SAllan Jude (echo '#define LENGTH 32'; \ 2141780e407SAllan Jude sed -e 's/mdX/sha512t/g' -e 's/MDX/SHA512_256_/g' \ 2151780e407SAllan Jude -e 's/SHA512_256__/SHA512_256_/g' \ 2161780e407SAllan Jude -e 's/SHA512_256_CTX/SHA512_CTX/g' \ 2171780e407SAllan Jude ${.ALLSRC}) > ${.TARGET} 2181780e407SAllan Jude 219d00ed299SGarrett Wollmanrmd160hl.c: mdXhl.c 220d00ed299SGarrett Wollman (echo '#define LENGTH 20'; \ 221d00ed299SGarrett Wollman sed -e 's/mdX/ripemd/g' -e 's/MDX/RIPEMD160_/g' \ 222d00ed299SGarrett Wollman -e 's/RIPEMD160__/RIPEMD160_/g' \ 223d00ed299SGarrett Wollman ${.ALLSRC}) > ${.TARGET} 224d00ed299SGarrett Wollman 225b468a9ffSAllan Judeskein256hl.c: mdXhl.c 226b468a9ffSAllan Jude (echo '#define LENGTH 32'; \ 227b468a9ffSAllan Jude sed -e 's/mdX/skein/g' -e 's/MDX/SKEIN256_/g' \ 228b468a9ffSAllan Jude -e 's/SKEIN256__/SKEIN256_/g' \ 229b468a9ffSAllan Jude ${.ALLSRC}) > ${.TARGET} 230b468a9ffSAllan Jude 231b468a9ffSAllan Judeskein512hl.c: mdXhl.c 232b468a9ffSAllan Jude (echo '#define LENGTH 64'; \ 233b468a9ffSAllan Jude sed -e 's/mdX/skein/g' -e 's/MDX/SKEIN512_/g' \ 234b468a9ffSAllan Jude -e 's/SKEIN512__/SKEIN512_/g' \ 235b468a9ffSAllan Jude ${.ALLSRC}) > ${.TARGET} 236b468a9ffSAllan Jude 237b468a9ffSAllan Judeskein1024hl.c: mdXhl.c 238b468a9ffSAllan Jude (echo '#define LENGTH 128'; \ 239b468a9ffSAllan Jude sed -e 's/mdX/skein/g' -e 's/MDX/SKEIN1024_/g' \ 240b468a9ffSAllan Jude -e 's/SKEIN1024__/SKEIN1024_/g' \ 241b468a9ffSAllan Jude ${.ALLSRC}) > ${.TARGET} 242b468a9ffSAllan Jude 243b468a9ffSAllan Jude 24411c456c0SRuslan Ermilov.for i in 2 4 5 24511c456c0SRuslan Ermilovmd${i}.3: ${.CURDIR}/mdX.3 24611c456c0SRuslan Ermilov sed -e "s/mdX/md${i}/g" -e "s/MDX/MD${i}/g" ${.ALLSRC} > ${.TARGET} 24711c456c0SRuslan Ermilov cat ${.CURDIR}/md${i}.copyright >> ${.TARGET} 24811c456c0SRuslan Ermilov.endfor 249c9502b53SPoul-Henning Kamp 250e0c51286SKyle EvansHAS_TESTS= 251e0c51286SKyle EvansSUBDIR.${MK_TESTS}+= tests 252c9502b53SPoul-Henning Kamp 253c9502b53SPoul-Henning Kamp.include <bsd.lib.mk> 254