Problem(s) verifying signed message with detached content
"Rupe, Jonathan C UTCFS" <[email protected]> Wed, 16 May 2007 11:46:46 -0400
| Newsgroups | gmane.ietf.sfl |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
------_=_NextPart_001_01C797D1.694772C0
Content-Type: multipart/alternative;
boundary="----_=_NextPart_002_01C797D1.694772C0"
------_=_NextPart_002_01C797D1.694772C0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
I am having a problem (or two) verifying a signed message that has
detached content. I am getting the error "encapsulated content digest =
!=3D
message digest attribute". However, I have been able to successfully
verify the message with another API (that I cannot use). If I skip past
where this exception is thrown (in sm_msgsignerinfo.cpp) I also get the
following error: "RSA OID Unknown or Not Handled Yet!" The hashing
algorithm is SHA-256 and signature algorithm is RSA. Is this supported?
Below is my code and attached are the sample files.
I'm new with all this stuff so any help (especially sample code :)) will
be greatly appreciated!
Thanks!
Jon
CSM_AppLogin appLogin;
appLogin.AddLogin(CTIL_FILE_NAME, NULL);
CSM_Buffer contentInfoBuf("./CHUIDSig.bin");
CSM_Buffer* pSignedDataBuf =3D NULL;
CSM_ContentInfoMsg contentInfoMsg(&contentInfoBuf);
if (contentInfoMsg.IsSignedData())
{
SM_RET_VAL retVal =3D 0;
CSM_MsgToVerify msgToVerify; //(&contentInfoMsg);
=09
pSignedDataBuf =3D new CSM_Buffer(
contentInfoMsg.AccessEncapContentClear()->m_content.Access(),
=09
contentInfoMsg.AccessEncapContentClear()->m_content.Length() );
=09
retVal =3D msgToVerify.PreProc(&appLogin, pSignedDataBuf);
if( retVal !=3D SM_NO_ERROR )
{
tcout <<_T("Failed to process verification message.")
<<endl;
return 1;
}
CSM_Buffer encapContent("./CHUIDData.bin");
CSM_Content content(&encapContent);
SNACC::AsnOid encapAsnOid =3D ID_PIV_CHUIDSECURITYOBJECT;
msgToVerify.SetEncapContentClear(content);
if( (retVal =3D msgToVerify.Verify(&appLogin)) =3D=3D SM_NO_ERROR )
{
tcout <<_T("Verification passed!") <<endl;
}
else
{
tcout <<_T("Failed signature verification.") <<endl;
}
}
else
{
tcout <<_T("Content doesn't contain SignedData") <<endl;
}
<<TestData.zip>>=20
------_=_NextPart_002_01C797D1.694772C0
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7651.59">
<TITLE>Problem(s) verifying signed message with detached content</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<P><FONT SIZE=3D2 FACE=3D"Arial">I am having a problem (or two) =
verifying a signed message that has detached content. I am getting the =
error "encapsulated content digest !=3D message digest =
attribute". However, I have been able to successfully verify the =
message with another API (that I cannot use). If I skip past where this =
exception is thrown (in sm_msgsignerinfo.cpp) I also get the following =
error: "RSA OID Unknown or Not Handled Yet!" The hashing =
algorithm is SHA-256 and signature algorithm is RSA. Is this =
supported? Below is my code and attached are the sample =
files.</FONT></P>
<P><FONT SIZE=3D2 FACE=3D"Arial">I'm new with all this stuff so any help =
(especially sample code :)) will be greatly appreciated!</FONT>
</P>
<P><FONT SIZE=3D2 FACE=3D"Arial">Thanks!</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Jon</FONT>
</P>
<BR>
<P><FONT SIZE=3D2 FACE=3D"Courier New">CSM_AppLogin appLogin;</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Courier =
New">appLogin.AddLogin(CTIL_FILE_NAME, NULL);</FONT>
</P>
<P><FONT SIZE=3D2 FACE=3D"Courier New">CSM_Buffer =
contentInfoBuf("./CHUIDSig.bin");</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Courier New">CSM_Buffer* pSignedDataBuf =3D =
NULL;</FONT>
</P>
<P><FONT SIZE=3D2 FACE=3D"Courier New">CSM_ContentInfoMsg =
contentInfoMsg(&contentInfoBuf);</FONT>
<BR><FONT COLOR=3D"#0000FF" SIZE=3D2 FACE=3D"Courier New">if</FONT><FONT =
SIZE=3D2 FACE=3D"Courier New"> (contentInfoMsg.IsSignedData())</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Courier New">{</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">SM_RET_VAL retVal =3D 0;</FONT>
</P>
<P> <FONT SIZE=3D2 =
FACE=3D"Courier New">CSM_MsgToVerify msgToVerify; </FONT><FONT =
COLOR=3D"#008000" SIZE=3D2 FACE=3D"Courier =
New">//(&contentInfoMsg);</FONT>
<BR> =
=
=20
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">pSignedDataBuf =3D </FONT><FONT COLOR=3D"#0000FF" =
SIZE=3D2 FACE=3D"Courier New">new</FONT><FONT SIZE=3D2 FACE=3D"Courier =
New"> CSM_Buffer( =
contentInfoMsg.AccessEncapContentClear()->m_content.Access(),</FONT>
<BR> =
=
=
=
=
=
<FONT SIZE=3D2 =
FACE=3D"Courier =
New">contentInfoMsg.AccessEncapContentClear()->m_content.Length() =
);</FONT>
<BR> =
=
=20
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">retVal =3D msgToVerify.PreProc(&appLogin, =
pSignedDataBuf);</FONT>
<BR> <FONT COLOR=3D"#0000FF" =
SIZE=3D2 FACE=3D"Courier New">if</FONT><FONT SIZE=3D2 FACE=3D"Courier =
New">( retVal !=3D SM_NO_ERROR )</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">{</FONT>
<BR> =
<FONT SIZE=3D2 =
FACE=3D"Courier New">tcout <<_T("Failed to process =
verification message.") <<endl;</FONT>
<BR> =
<FONT COLOR=3D"#0000FF" =
SIZE=3D2 FACE=3D"Courier New">return</FONT><FONT SIZE=3D2 =
FACE=3D"Courier New"> 1;</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">}</FONT>
</P>
<P> <FONT SIZE=3D2 =
FACE=3D"Courier New">CSM_Buffer =
encapContent("./CHUIDData.bin");</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">CSM_Content content(&encapContent);</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">SNACC::AsnOid encapAsnOid =3D =
ID_PIV_CHUIDSECURITYOBJECT;</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">msgToVerify.SetEncapContentClear(content);</FONT>
</P>
<P> <FONT COLOR=3D"#0000FF" =
SIZE=3D2 FACE=3D"Courier New">if</FONT><FONT SIZE=3D2 FACE=3D"Courier =
New">( (retVal =3D msgToVerify.Verify(&appLogin)) =3D=3D SM_NO_ERROR =
)</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">{</FONT>
<BR> =
<FONT SIZE=3D2 =
FACE=3D"Courier New">tcout <<_T("Verification passed!") =
<<endl;</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">}</FONT>
<BR> <FONT COLOR=3D"#0000FF" =
SIZE=3D2 FACE=3D"Courier New">else</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">{</FONT>
<BR> =
<FONT SIZE=3D2 =
FACE=3D"Courier New">tcout <<_T("Failed signature =
verification.") <<endl;</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">}</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Courier New">}</FONT>
<BR><FONT COLOR=3D"#0000FF" SIZE=3D2 FACE=3D"Courier New">else</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Courier New">{</FONT>
<BR> <FONT SIZE=3D2 =
FACE=3D"Courier New">tcout <<_T("Content doesn't contain =
SignedData") <<endl;</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>
<P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
<<TestData.zip>> </FONT>
</P>
</BODY>
</HTML>
------_=_NextPart_002_01C797D1.694772C0--
------_=_NextPart_001_01C797D1.694772C0
Content-Type: application/x-zip-compressed;
name="TestData.zip"
Content-Transfer-Encoding: base64
Content-Description: TestData.zip
Content-Disposition: attachment;
filename="TestData.zip"
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
------_=_NextPart_001_01C797D1.694772C0--