Closed Bug 294538 Opened 20 years ago Closed 9 years ago

unexported functions in NSS header files

Categories

(NSS :: Libraries, defect, P4)

3.10

Tracking

(Not tracked)

RESOLVED WONTFIX
Future

People

(Reporter: jason.m.reid, Unassigned)

References

Details

The following CERT api functions in cert.h are not exported in a .def file. CERT_CopyAVA NOT exported CERT_CompareAVA NOT exported CERT_DestroyRDN NOT exported CERT_AddAVA NOT exported CERT_CompareRDN NOT exported CERT_KMIDPublicKey NOT exported CERT_GetCertKeyType NOT exported CERT_InitCertDB NOT exported CERT_SetDefaultCertDB NOT exported CERT_NameFromDERCert NOT exported CERT_IssuerNameFromDERCert NOT exported CERT_KeyFromDERCert NOT exported CERT_KeyFromIssuerAndSN NOT exported CERT_SerialNumberFromDERCert NOT exported CERT_OpenVolatileCertDB NOT exported CERT_DestroyCrl NOT exported CERT_FindCertByKey NOT exported CERT_FindCertByNameString NOT exported CERT_FindCertByKeyID NOT exported CERT_FindCertByEmailAddr NOT exported CERT_FindCertBySPKDigest NOT exported CERT_VerifyCertChain NOT exported CERT_HTMLCertInfo NOT exported CERT_GetCertificateEmailAddress NOT exported CERT_ChangeCertTrustByUsage NOT exported CERT_AddExtensionByOID NOT exported CERT_FindNSStringExtension NOT exported CERT_FindCertURLExtension NOT exported CERT_FindAuthKeyIDExten NOT exported CERT_FindInvalidDateExten NOT exported CERT_FindCRLNumberExten NOT exported CERT_CompareCerts NOT exported CERT_CompareCertsForRedirection NOT exported CERT_IsNewer NOT exported CERT_IsCertRevoked NOT exported CERT_FixupEmailAddr NOT exported CERT_EncodeTrustString NOT exported CERT_PrevSubjectCert NOT exported CERT_NextSubjectCert NOT exported CERT_SaveImportedCert NOT exported CERT_AddNewCerts NOT exported CERT_CertPackageType NOT exported CERT_SetCAPolicyStringCallback NOT exported CERT_GetCertCommentString NOT exported CERT_GovtApprovedBitSet NOT exported CERT_AddPermNickname NOT exported CERT_FindCertByUsage NOT exported CERT_MatchUserCert NOT exported CERT_AddCertToListHead NOT exported CERT_AddCertToListTailWithData NOT exported CERT_AddCertToListHeadWithData NOT exported CERT_AddCertToListSorted NOT exported CERT_SortCBValidity NOT exported CERT_CheckForEvilCert NOT exported CERT_EncodeSubjectKeyID NOT exported CERT_GetNickName NOT exported CERT_CreateNicknameCertList NOT exported CERT_CreateEmailAddrCertList NOT exported CERT_CheckKeyUsage NOT exported CERT_KeyUsageAndTypeForCertUsage NOT exported CERT_TrustFlagsForCACertUsage NOT exported CERT_ExtractNicknameString NOT exported CERT_GetCertNicknameWithValidity NOT exported CERT_FindMatchingCert NOT exported CERT_LockDB NOT exported CERT_UnlockDB NOT exported CERT_GetStatusConfig NOT exported CERT_SetStatusConfig NOT exported CERT_LockCertRefCount NOT exported CERT_UnlockCertRefCount NOT exported CERT_LockCertTrust NOT exported CERT_UnlockCertTrust NOT exported CERT_SPKDigestValueForCert NOT exported CERT_CheckCRL NOT exported
QA Contact: bishakhabanerjee → jason.m.reid
Assignee: wtchang → nobody
QA Contact: jason.m.reid → libraries
The following API calls in certdb.h are not found in a .def file. SEC_FindCrlByKey NOT exported SEC_CrlIsNewer NOT exported SEC_CheckCrlTimes NOT exported SEC_AddPermCertificate NOT exported SEC_FindPermCertByKey NOT exported SEC_FindPermCertByName NOT exported SEC_OpenPermCertDB NOT exported PCERT_TraversePermCerts NOT exported SEC_AddTempNickname NOT exported SEC_DeleteTempNickname NOT exported SEC_CertDBKeyConflict NOT exported SEC_GetCrlTimes NOT exported SEC_AddPermCrlToTemp NOT exported SEC_DeleteTempCrl NOT exported SEC_CheckKRL NOT exported SEC_CheckCRL NOT exported SEC_CrlReplaceUrl NOT exported The following api calls in cms.h are not found in a .def file. NSS_CMSMessage_SetEncodingParams NOT exported NSS_CMSMessage_GetArena NOT exported NSS_CMSMessage_ContainsCertsOrCrls NOT exported NSS_CMSMessage_IsContentEmpty NOT exported NSS_CMSContentInfo_Destroy NOT exported NSS_CMSContentInfo_GetChildContentInfo NOT exported NSS_CMSContentInfo_GetInnerContent NOT exported NSS_CMSContentInfo_GetContentTypeOID NOT exported NSS_CMSContentInfo_SetContentEncAlgID NOT exported NSS_CMSArray_SortByDER NOT exported NSS_CMSUtil_DERCompare NOT exported NSS_CMSAlgArray_GetIndexByAlgID NOT exported NSS_CMSAlgArray_GetIndexByAlgTag NOT exported NSS_CMSUtil_GetHashObjByAlgID NOT exported NSS_CMSUtil_MakeSignatureAlgorithm NOT exported NSS_CMSUtil_GetTemplateByTypeTag NOT exported NSS_CMSUtil_GetSizeByTypeTag NOT exported NSS_CMSContent_GetContentInfo NOT exported NSS_CMSSignedData_Encode_BeforeStart NOT exported NSS_CMSSignedData_Encode_BeforeData NOT exported NSS_CMSSignedData_Encode_AfterData NOT exported NSS_CMSSignedData_Decode_BeforeData NOT exported NSS_CMSSignedData_Decode_AfterData NOT exported NSS_CMSSignedData_Decode_AfterEnd NOT exported NSS_CMSSignedData_GetSignerInfos NOT exported NSS_CMSSignedData_GetCertificateList NOT exported NSS_CMSSignedData_ContainsCertsOrCrls NOT exported NSS_CMSSignedData_GetDigestValue NOT exported NSS_CMSSignerInfo_Sign NOT exported NSS_CMSSignerInfo_VerifyCertificate NOT exported NSS_CMSSignerInfo_Verify NOT exported NSS_CMSSignerInfo_GetDigestAlg NOT exported NSS_CMSSignerInfo_GetDigestAlgTag NOT exported NSS_CMSSignerInfo_AddAuthAttr NOT exported NSS_CMSSignerInfo_AddUnauthAttr NOT exported NSS_CMSSignerInfo_AddCounterSignature NOT exported NSS_CMSEnvelopedData_Encode_BeforeStart NOT exported NSS_CMSEnvelopedData_Encode_BeforeData NOT exported NSS_CMSEnvelopedData_Encode_AfterData NOT exported NSS_CMSEnvelopedData_Decode_BeforeData NOT exported NSS_CMSEnvelopedData_Decode_AfterData NOT exported NSS_CMSEnvelopedData_Decode_AfterEnd NOT exported NSS_CMSRecipientInfo_GetVersion NOT exported NSS_CMSRecipientInfo_GetEncryptedKey NOT exported NSS_CMSRecipientInfo_GetKeyEncryptionAlgorithmTag NOT exported NSS_CMSEncryptedData_Encode_BeforeStart NOT exported NSS_CMSEncryptedData_Encode_BeforeData NOT exported NSS_CMSEncryptedData_Encode_AfterData NOT exported NSS_CMSEncryptedData_Decode_BeforeData NOT exported NSS_CMSEncryptedData_Decode_AfterData NOT exported NSS_CMSEncryptedData_Decode_AfterEnd NOT exported NSS_CMSDigestedData_Encode_BeforeStart NOT exported NSS_CMSDigestedData_Encode_BeforeData NOT exported NSS_CMSDigestedData_Encode_AfterData NOT exported NSS_CMSDigestedData_Decode_BeforeData NOT exported NSS_CMSDigestedData_Decode_AfterData NOT exported NSS_CMSDigestedData_Decode_AfterEnd NOT exported The following api call from cryptohi.h is not found in a .def file. SEC_DestroySignedData NOT exported The following api calls in keyhi.h are not found in a .def file. SECKEY_KEAParamCompare NOT exported SECKEY_DecodeDERPublicKey NOT exported SECKEY_ConvertAndDecodePublicKey NOT exported SECKEY_ConvertAndDecodePublicKeyAndChallenge NOT exported SECKEY_ConvertAndDecodeSubjectPublicKeyInfo NOT exported SECKEY_NewPublicKeyList NOT exported SECKEY_RemovePublicKeyListNode NOT exported SECKEY_AddPublicKeyToListTail NOT exported SECKEY_ECParamsToKeySize NOT exported The following api calls in nssbase.h are not found in a .def file. NSSArena_Create NOT exported NSSArena_Destroy NOT exported NSS_GetError NOT exported NSS_GetErrorStack NOT exported The following api calls in nssckfw.h are not found in a .def file. NSSCKFWInstance_GetMDInstance NOT exported NSSCKFWInstance_GetArena NOT exported NSSCKFWInstance_MayCreatePthreads NOT exported NSSCKFWInstance_CreateMutex NOT exported NSSCKFWInstance_GetConfigurationData NOT exported NSSCKFWInstance_GetInitArgs NOT exported NSSCKFWSlot_GetMDSlot NOT exported NSSCKFWSlot_GetFWInstance NOT exported NSSCKFWSlot_GetMDInstance NOT exported NSSCKFWToken_GetMDToken NOT exported NSSCKFWToken_GetArena NOT exported NSSCKFWToken_GetFWSlot NOT exported NSSCKFWToken_GetMDSlot NOT exported NSSCKFWSession_GetSessionState NOT exported NSSCKFWMechanism_GetMDMechanism NOT exported NSSCKFWMechanism_GetParameter NOT exported NSSCKFWSession_GetMDSession NOT exported NSSCKFWSession_GetArena NOT exported NSSCKFWSession_CallNotification NOT exported NSSCKFWSession_IsRWSession NOT exported NSSCKFWSession_IsSO NOT exported NSSCKFWObject_GetMDObject NOT exported NSSCKFWObject_GetArena NOT exported NSSCKFWObject_IsTokenObject NOT exported NSSCKFWObject_GetAttributeCount NOT exported NSSCKFWObject_GetAttributeTypes NOT exported NSSCKFWObject_GetAttributeSize NOT exported NSSCKFWObject_GetAttribute NOT exported NSSCKFWObject_GetObjectSize NOT exported NSSCKFWFindObjects_GetMDFindObjects NOT exported NSSCKFWMutex_Destroy NOT exported NSSCKFWMutex_Lock NOT exported NSSCKFWMutex_Unlock NOT exported The following api call found in nssrwlk.h is not found in a .def file. nssRWLock_AtomicCreate NOT exported The following api calls in ocsp.h are not found in a .def file. CERT_DecodeOCSPRequest NOT exported CERT_GetEncodedOCSPResponse NOT exported CERT_CheckOCSPStatus NOT exported The following api calls in portreg.h are not found in a .def file. PORT_RegExpValid NOT exported PORT_RegExpSearch NOT exported PORT_RegExpCaseSearch NOT exported The following api calls in secasn1.h are not found in a .def file. sec_ASN1EncoderSetDER NOT exported sec_ASN1EncoderClearDER NOT exported SEC_ASN1EncodeUnsignedInteger NOT exported SEC_ASN1EncodeLength NOT exported SEC_ASN1GetSubtemplate NOT exported SEC_ASN1IsTemplateSimple NOT exported The following api calls in secder.h are not found in a .def file. DER_StoreHeader NOT exported DER_LengthLength NOT exported DER_SetInteger NOT exported DER_SetUInteger NOT exported DER_GetUInteger NOT exported DER_TimeToUTCTimeArena NOT exported DER_GeneralizedDayToAscii NOT exported DER_TimeChoiceDayToAscii NOT exported DER_TimeToGeneralizedTime NOT exported DER_TimeToGeneralizedTimeArena NOT exported CERT_UTCTime2FormattedAscii NOT exported The following api calls in secdig.h are not found in a .def file. SGN_EncodeDigestInfo NOT exported SGN_DecodeDigestInfo NOT exported The following api calls in secitem.h are not found in a .def file. SECITEM_ReallocItem NOT exported SECITEM_Hash NOT exported SECITEM_HashCompare NOT exported The following api calls in secmime.h are not found in a .def file. SECMIME_EnableCipher NOT exported SECMIME_SetPolicy NOT exported SECMIME_EncryptionPossible NOT exported SECMIME_CreateEncrypted NOT exported SECMIME_CreateSigned NOT exported The following api calls in secoid.h are not found in a .def file. SECOID_FindOIDByMechanism NOT exported SECOID_KnownCertExtenOID NOT exported SECOID_Shutdown NOT exported The following api call in secpkcs5.h is not found in a .def file. SEC_PKCS5CreateAlgorithmID NOT exported The following api calls in secpkcs7.h are not found in a .def file. SEC_PKCS7AddSignedAttribute NOT exported SEC_PKCS7AddCertChain NOT exported SEC_PKCS7AddSymmetricCapabilities NOT exported SEC_PKCS7PrepareForEncode NOT exported SEC_PKCS7EncryptContents NOT exported SEC_PKCS7GetKeyLength NOT exported The following api calls in secport.h are not found in a .def file. PORT_AllocBlock NOT exported PORT_ReallocBlock NOT exported PORT_FreeBlock NOT exported PORT_Time NOT exported PORT_UCS4_UTF8Conversion NOT exported PORT_ISO88591_UTF8Conversion NOT exported The following api calls in smime.h are not found in a .def file. NSS_SMIMEUtil_EnableCipher NOT exported NSS_SMIMEUtils_AllowCipher NOT exported NSS_SMIMEUtil_DecryptionAllowed NOT exported NSS_SMIMEUtil_EncryptionPossible NOT exported NSS_SMIMEUtil_CreateSMIMECapabilities NOT exported NSS_SMIMEUtil_CreateSMIMEEncKeyPrefs NOT exported NSS_SMIMEUtil_CreateMSSMIMEEncKeyPrefs NOT exported NSS_SMIMEUtil_GetCertFromEncryptionKeyPreference NOT exported
Severity: normal → minor
OS: Linux → All
Priority: -- → P4
Hardware: PC → All
Summary: unexported CERT api calls in cert.h → unexported functions in NSS header files
Target Milestone: --- → Future
*** Bug 294539 has been marked as a duplicate of this bug. ***
*** Bug 294541 has been marked as a duplicate of this bug. ***
*** Bug 294544 has been marked as a duplicate of this bug. ***
*** Bug 294547 has been marked as a duplicate of this bug. ***
*** Bug 294548 has been marked as a duplicate of this bug. ***
*** Bug 294549 has been marked as a duplicate of this bug. ***
*** Bug 294550 has been marked as a duplicate of this bug. ***
*** Bug 294551 has been marked as a duplicate of this bug. ***
*** Bug 294558 has been marked as a duplicate of this bug. ***
*** Bug 294559 has been marked as a duplicate of this bug. ***
*** Bug 294560 has been marked as a duplicate of this bug. ***
*** Bug 294561 has been marked as a duplicate of this bug. ***
*** Bug 294562 has been marked as a duplicate of this bug. ***
*** Bug 294563 has been marked as a duplicate of this bug. ***
*** Bug 294564 has been marked as a duplicate of this bug. ***
*** Bug 294565 has been marked as a duplicate of this bug. ***
*** Bug 294566 has been marked as a duplicate of this bug. ***
*** Bug 294567 has been marked as a duplicate of this bug. ***
*** Bug 294568 has been marked as a duplicate of this bug. ***
Recently after having to write a CRL checking library for our product instead of being able to use many of the fucntions that are in theory available for use, I had to roll my own because of the fact that a number of these functions were not exported, such as SEC_CheckCrlTimes() Whilst some developers may be willing to use unexported functions and just hope they don't get burnt by some incompatible change, I simply don't have that flexibility. 6 years and 19 duplicate bugs later, is there any intention to resolve these issues?
In addition I'll note that SEC_FindCrlByKey() is defined in mozilla/security/nss/lib/certdb/certdb.h as a prototype but no where else, and therefore all reference to it should be removed.
CERT_DecodeDERCertificate() is yet another example. In this particular situation I assume that widespread use of internal function __CERT_DecodeDERCertificate() was found, and the decision to make it external was made. Presumably __CERT_DecodeDERCertificate() became CERT_DecodeDERCertificate() and the former simply became a wrapper to maintain backward compatibility. Yet the new name was not added to the list of exported functions.
libreswan currently had to copy: CheckCrlTimes() CERT_CompareAVA() We also had to copy some code that these functions call themselves. So we have a bit of a hack: https://github.com/libreswan/libreswan/blob/master/lib/libswan/nss_copies.c Please export these two functions so we can remove this hack in libreswan
SEC_CheckCrlTimes is exported since NSS 3.18 (see bug 1117897 that you filed). Please file a separate bug for CERT_CompareAVA. I close this one as wontfix. I don't see the point of this bug. Please file separate issues for individual functions that are not exported.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → WONTFIX
Thanks for the reply. We fixed our code to no longer carry copied code for SEC_CheckCrlTimes() It seems CERT_CompareAVA() is also exported now in 3.28, but not yet in 3.21. We will look at how we will handle that for now as 3.21 is still in wide use (eg RHEL7)
oops. a non-clean compile confused me - it is not exported in the .so and only appears in the header file. I have filed: https://bugzilla.mozilla.org/show_bug.cgi?id=1336487
You need to log in before you can comment on or make changes to this bug.