[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Broken constructors for CSM_MsgToVerify



Erik Rissanen [mailto:Erik.Rissanen@xxxxxxx] wrote:

> One more thing: Some of the overloaded versions of 
> CSM_MsgToVerify::CSM_MsgToVerify and CSM_MsgToVerify::PreProc do not process
> the signerInfos so that they become available in 
> CSM_MsgToVerify::m_pSignerInfos. Is this a bug? 
> For instance: 
>
> // Does not work: 
> CSM_ContentInfoMsg *pcim = new CSM_ContentInfoMsg(pSMIMEMsg); 
> CSM_MsgToVerify *pMsg = new CSM_MsgToVerify(pcim); 
> pMsg->PreProc(pAppLogin); 
> // pMsg->m_pSignerInfos == NULL now 
>
> //Works: 
> // pci is SNACC ContentInfo with signedData in pci->content 
> CSM_MsgToVerify *pMsg = new CSM_MsgToVerify(pAppLogin, (CSM_Buffer *) 
> pci->content.value); 
> pMsg->PreProc(pAppLogin); 
> // pMsg->m_pSignerInfos != NULL now 

I have been trying to write some verify code using SFL 1.9 and have come
across the same problem.  It's obvious from the source.

In sm_Verify.cpp revision 1.89, the only place where the m_pSignerInfos
array is constructed is in the code at line 343 in the PreProc() method
that takes only a blob as parameter.  This method is also called by:

1. the constructor that takes a pCSMIME and a blob (CSM_Buffer *).
2. the Verify method that takes a pCSMIME and a blob.
3. the PreProc method that takes a pCSMIME, a blob and an optional
recipient list.

The constructors that take a CSM_ContentInfoMsg pointer or a CSM_Content
pointer don't call it.  This looks to me to be a mistake.  Is there
going to be a new release soon that fixes this?

John Stark
jas@xxxxxxxxxxxx