# 
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
CORE_DEPTH = ../..

MODULE = nss

REQUIRES = nssutil

LIBRARY_NAME = cryptohi

EXPORTS = \
	cryptohi.h \
	cryptoht.h \
	key.h     \
	keyhi.h   \
	keyt.h    \
	keythi.h  \
	sechash.h \
	$(NULL)

PRIVATE_EXPORTS = \
	keyi.h    \
	$(NULL)

CSRCS = \
	sechash.c \
	seckey.c  \
	secsign.c \
	secvfy.c  \
	dsautil.c \
	$(NULL)

# This part of the code, including all sub-dirs, can be optimized for size
export ALLOW_OPT_CODE_SIZE = 1
