Open Bug 294542 Opened 20 years ago Updated 2 years ago

CRMF code not in any NSS shared lib

Categories

(NSS :: Libraries, enhancement, P4)

3.10
enhancement

Tracking

(Not tracked)

People

(Reporter: jason.m.reid, Unassigned)

Details

The following api calls in crmf.h are not found in a .def file. CRMF_EncodeCertReqMsg NOT exported CRMF_EncodeCertRequest NOT exported CRMF_EncodeCertReqMessages NOT exported CRMF_CreateCertReqMsg NOT exported CRMF_DestroyCertReqMsg NOT exported CRMF_CertReqMsgSetCertRequest NOT exported CRMF_CreateCertRequest NOT exported CRMF_DestroyCertRequest NOT exported CRMF_CreateCertExtension NOT exported CRMF_DestroyCertExtension NOT exported CRMF_CertRequestSetTemplateField NOT exported CRMF_CertRequestIsFieldPresent NOT exported CRMF_CertRequestIsControlPresent NOT exported CRMF_CertRequestSetRegTokenControl NOT exported CRMF_CertRequestSetAuthenticatorControl NOT exported CRMF_CreateEncryptedKeyWithEncryptedValue NOT exported CRMF_DestroyEncryptedKey NOT exported CRMF_CreatePKIArchiveOptions NOT exported CRMF_DestroyPKIArchiveOptions NOT exported CRMF_CertRequestSetPKIArchiveOptions NOT exported CRMF_CertReqMsgGetPOPType NOT exported CRMF_CertReqMsgSetRAVerifiedPOP NOT exported CRMF_CertReqMsgSetSignaturePOP NOT exported CRMF_CertReqMsgSetKeyEnciphermentPOP NOT exported CRMF_CertReqMsgSetKeyAgreementPOP NOT exported CRMF_CreateCertReqMsgFromDER NOT exported CRMF_CreateCertReqMessagesFromDER NOT exported CRMF_DestroyCertReqMessages NOT exported CRMF_CertReqMessagesGetNumMessages NOT exported CRMF_CertReqMessagesGetCertReqMsgAtIndex NOT exported CRMF_CertReqMsgGetID NOT exported CRMF_DoesRequestHaveField NOT exported CRMF_CertReqMsgGetCertRequest NOT exported CRMF_CertRequestGetCertTemplateVersion NOT exported CRMF_CertRequestGetCertTemplateSerialNumber NOT exported CRMF_CertRequestGetCertTemplateSigningAlg NOT exported CRMF_CertRequestGetCertTemplateIssuer NOT exported CRMF_CertRequestGetCertTemplateValidity NOT exported CRMF_DestroyGetValidity NOT exported CRMF_CertRequestGetCertTemplateSubject NOT exported CRMF_CertRequestGetCertTemplatePublicKey NOT exported CRMF_CertRequestGetCertTemplateIssuerUID NOT exported CRMF_GetCertTemplateSubjectUID NOT exported CRMF_CertRequestGetNumberOfExtensions NOT exported CRMF_CertRequestGetExtensionAtIndex NOT exported CRMF_CertExtensionGetOidTag NOT exported CRMF_CertExtensionGetIsCritical NOT exported CRMF_CertExtensionGetValue NOT exported CRMF_CertReqMsgGetPOPOSigningKey NOT exported CRMF_DestroyPOPOSigningKey NOT exported CRMF_POPOSigningKeyGetAlgID NOT exported CRMF_POPOSigningKeyGetSignature NOT exported CRMF_POPOSigningKeyGetInput NOT exported CRMF_CertReqMsgGetPOPKeyEncipherment NOT exported CRMF_CertReqMsgGetPOPKeyAgreement NOT exported CRMF_DestroyPOPOPrivKey NOT exported CRMF_POPOPrivKeyGetChoice NOT exported CRMF_POPOPrivKeyGetThisMessage NOT exported CRMF_POPOPrivKeyGetSubseqMess NOT exported CRMF_POPOPrivKeyGetDHMAC NOT exported CRMF_CertRequestGetNumControls NOT exported CRMF_CertRequestGetControlAtIndex NOT exported CRMF_DestroyControl NOT exported CRMF_ControlGetControlType NOT exported CRMF_ControlGetRegTokenControlValue NOT exported CRMF_ControlGetAuthicatorControlValue NOT exported CRMF_ControlGetPKIArchiveOptions NOT exported CRMF_DestroyPKIArchiveOptions NOT exported CRMF_PKIArchiveOptionsGetOptionType NOT exported CRMF_PKIArchiveOptionsGetEncryptedPrivKey NOT exported CRMF_EncryptedKeyGetChoice NOT exported CRMF_EncryptedKeyGetEncryptedValue NOT exported CRMF_DestroyEncryptedValue NOT exported CRMF_EncryptedValueGetEncValue NOT exported CRMF_EncryptedValueGetIntendedAlg NOT exported CRMF_EncryptedValueGetSymmAlg NOT exported CRMF_EncryptedValueGetKeyAlg NOT exported CRMF_EncryptedValueGetValueHint NOT exported CRMF_EncryptedValueGetEncSymmKey NOT exported CRMF_PKIArchiveOptionsGetKeyGenParameters NOT exported CRMF_PKIArchiveOptionsGetArchiveRemGenPrivKey NOT exported CRMF_GetBestWrapPadMechanism NOT exported CRMF_GetIVFromMechanism NOT exported
Summary: unported api calls in crmf.h → unexported api calls in crmf.h
QA Contact: bishakhabanerjee → jason.m.reid
Assignee: wtchang → nobody
QA Contact: jason.m.reid → libraries
The CRMF functions are not in any .def file because they are not in any NSS shared libs. Into which of the existing NSS shared libs, if any, should they be added? Kai, any opinion on this? Does mozilla even use the CRMF code?
Severity: normal → enhancement
OS: Linux → All
Hardware: PC → All
Summary: unexported api calls in crmf.h → CRMF code not in any NSS shared lib
I don't have an opinion on this. I think Bob and Wan-Teh are better candidates to propose where they should be exported. Why do you need them exported? You can't simply link them statically?
(In reply to comment #1) > Does mozilla even use the CRMF code? Yes, PSM calls several CRMF_ functions. See file mozilla/security/manager/ssl/src/nsCrypto.cpp
A solution to this bug, and reducing the need of PSM to link against libcrmf.a, could avoid a RPM package dependency issue we are currently trying to solve. The issue is: When a Mozilla/PSM application gets built, it links in functions from libcrmf.a, which references the required exported functions from NSS. We recently exported SEC_ASN1EncodeUnsignedInteger on the 3.11 branch. This function is used by the crmf code. When the application package got compiled on an up-to-date build system, a dependency on that new exported symbol was added to the PSM shared library - although PSM does not use the new symbol itself. Now we had a bug, where end users updated the Mozilla/PSM application ONLY, but did not update the NSS package. This broke the Mozilla application, end users were no longer able to start it up. We currently have to find a solution how to avoid this kind of "unfortunate dependency" in the future. Either by explicit, manual dependency configuration when producing the Mozilla application package, or hopefully by finding a way to automate recording of the NSS version dependency when producing the application package. However, getting rid of libcrmf.a and only linking in dynamic NSS symbols, might also be a good solution to this bug (thanks to Wan-Teh for making this proposal). This way, recompiling the Mozilla/PSM application would not introduce dependency on new symbols that are only used internally by NSS.
Priority: -- → P4
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.