;+#
;+# 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/.
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
;+#   1. For all unix platforms, the string ";-"  means "remove this line"
;+#   2. For all unix platforms, the string " DATA " will be removed from any 
;+#	line on which it occurs.
;+#   3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+#      On AIX, lines containing ";+" will be removed.  
;+#   4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+#   5. For all unix platforms, after the above processing has taken place,
;+#    all characters after the first ";" on the line will be removed.  
;+#    And for AIX, the first ";" will also be removed.
;+#  This file is passed directly to windows. Since ';' is a comment, all UNIX
;+#   directives are hidden behind ";", ";+", and ";-"
;+
;+NSS_3.12 {               # NSS 3.12 release
;+    global:
LIBRARY pkixutil ;-
EXPORTS	;-
createBuildResult;
createCRL;
createCert;
createCertChain;
createCertChainPlus;
createDate;
createGeneralName;
createProcessingParams;
createTrustAnchor;
createValidateParams;
createValidateResult;
endTests;
startTests;
subTest;
testDuplicateHelper;
testEqualsHelper;
testError;
testErrorUndo;
testHashcodeHelper;
testToStringHelper;
PKIX_Cert2ASCII;
PKIX_Error2ASCII;
PKIX_String2ASCII;
;+    local:
;+       *;
;+};
