Re: Problem Encrypting with RSA and Crypto++ 3.1

Jonathan Schulze-Hewett <[email protected]>
Newsgroups gmane.ietf.sfl
Organization Information Security Corporation
Message-ID <[email protected]>
Thank you very much for your response. I will try to fill in the
details.
1. sm_free3 was compiled with the SM_FREE3_RSA_INCLUDED flag defined.
2. The code has the same problem if a private key and password are
provided to the AddLogin call.
3. I am not aware that there are different versions of Crypto++ 3.1.
Could you direct me in determining if we have the same version?
4. The test src code in CL_MsgToEncrypt::Fill method's default
certifiacte processing code is the basis for the recipient info
configuration. I believe I followed it properly (load the cert file into
a buffer, convert to memory, construct a recipient info)...
5. Here is the stack dump. It seems to be doing Diffie-Hellman key
agreement with the RSA key...It dies on the assert(modulus.IsOdd())
statement because the Integer passed in is 0.
---Top of stack---
CryptoPP::MontgomeryRepresentation::MontgomeryRepresentation(const
CryptoPP::Integer & {...}) line 2250
CryptoPP::ModExpPrecomputation::Precompute(const CryptoPP::Integer &
{...}, const CryptoPP::Integer & {...}, unsigned int 0, unsigned int 1)
line 29 + 38 bytes
CryptoPP::ModExpPrecomputation::ModExpPrecomputation(const
CryptoPP::Integer & {...}, const CryptoPP::Integer & {...}, unsigned int
0, unsigned int 1) line 17
CryptoPP::DH::DH(const CryptoPP::Integer & {...}, const
CryptoPP::Integer & {...}, unsigned int 1) line 12 + 194 bytes
CSM_Free3::SMTI_GenerateKeyAgreement(CSM_Buffer * 0x0094d940, CSM_Buffer
* 0x0094b8c0, CSM_Buffer * 0x0094b9d0, CSM_Buffer * 0x0094d770, CSM_OID
* 0x00000000, CSM_Buffer * 0x0012ef20, long 24) line 949 + 68 bytes
CSM_DataToEncrypt::AddRecipient(CSM_CSInst * 0x0094c060,
CSM_RecipientInfo * 0x0094c0f0, CSM_Buffer & {...},
CSM_ListC<CSM_RecipientInfo> * 0x0094c320) line 733 + 574 bytes
CSM_DataToEncrypt::ProcessRecipients(CSMIME * 0x00945df0,
CSM_ListC<CSM_RecipientInfo> * 0x0094c320, CSM_Buffer & {...}) line 1002
+ 337 bytes
CSM_DataToEncrypt::Encrypt(CSMIME * 0x00945df0, CSM_MsgCertCrls *
0x00000000, CSM_ListC<CSM_RecipientInfo> * 0x0094c320, CSM_OID *
0x0094a030, CSM_Buffer * 0x0094a03c, CSM_Alg * 0x0094be40, CSM_Buffer *
0x0094bdb0) line 1205 + 222 bytes
CSM_MsgToEncrypt::Encrypt(CSMIME * 0x00945df0) line 171 + 635 bytes
main(int 1, char * * 0x009448e0, char * * 0x00940e70) line 151
---Bottom of stack---

I hope this helps. I really appreciate your assistance.
Thanks!
-Jonathan

"Colestock, Robert" wrote:
> 
> Jonathan:
> 
> First, let me mention I have not tried to build a message in such a way.  It
> would seem there is a lot of logic missing dealing with the construction of
> the RecipientInfo, I would have to analyze what the sm_Encrypt.cpp logic
> does to tell what might be missing.
> 
> Preliminaries:  you have provided very little information, did you compile
> the SMTI for sm_free3 with the SM_FREE3_RSA_INCLUDED flag defined?
>                         Have you tried performing the operation with a
> private key (I realise it should not be necessary for RSA, but I have never
> tried to perform an encryption operation without a key, even for the DH)?
> This should be easy to add since the file is present in the release
> ("./test/certs/private.d/DaisyRsaF3X_8.dat").  You probably realise this
> already, but you will not be able to decrypt the message without this file.
>                         Are you using the same version of the Crypto++ 3.1
> library?  I have some subtle differences in the library releases that might
> affect operations.
> 
> If the private key does not make this work for encryption, please let me
> know the full stack of the crash, I will attempt to build an encryption
> operation (it works in our releases using the configuration test logic to
> build a message, of course with the private key intact in the login).
> 
> Bob Colestock
> VDA
> 
> -----Original Message-----
> From: Jonathan Schulze-Hewett [mailto:[email protected]]
> Sent: Monday, June 26, 2000 4:15 PM
> To: [email protected]
> Subject: Problem Encrypting with RSA and Crypto++ 3.1
> 
> Hi All,
>   I have tried to write a very simple encryption routine with the SFL
> and I'm getting "Assertion failed: modulus.IsOdd(), file
> ..\crypto31\integer.cpp, line 2250 with the code below when encrypt is
> called. I would really appreciate help in getting this to work! :) I
> have spent several days trying different things. The one thing that sort
> of works (i.e. it doesn't crash) is to use a DSA cert for the login but
> then it won't let an RSA cert be a recipient!
> 
> TIA
> -Jonathan
> ----------------------------------------------------------------------------
> -
> // construct message to encrypt.
> char *msgStr = "Content-Type: Text/Plain\nContent-Transfer-Encoding:
> 7bit\n\rTestMessage\n\r";
> // Login and setup our instance.
> AppLogin = new CSM_AppLogin();
> AppLogin->AddLogin("sm_free3DLLd", "sm_free3DLL ./certs/DaisyRsaExts.out
> NULL NULL sm_FREE3");
> CSM_CSInst *tmpInst =NULL;
> for (tmpInst = AppLogin->m_pCSInsts->FirstL(); tmpInst != NULL;tmpInst =
> AppLogin->m_pCSInsts->NextL())
> {
>         tmpInst->SetUseThis();
> }
> // Set up content.
> CSM_Content mycontent(msgStr);
> CSM_MsgToEncrypt myencrypt;
> myencrypt.SetEncapContent(mycontent);
> // Set content type and content encryption type.
> CSM_OID tmpoid("1.2.840.113549.1.7.1"); // PKCS#7 DATA
> myencrypt.setContentType(tmpoid);
> CSM_OID tmp2oid("1.2.840.113549.3.2");  // # rc2 cbc // old def for MSEO
> interop.
> myencrypt.SetContentEncryptOID(&tmp2oid);
> // Set whether to include original certs, IssOrSki,
> myencrypt.SetIncludeOrigCertsFlag(false);
> myencrypt.m_bIssOrSki = false; // True if SUBJECT KEY IDENTIFIER is
> used.
> // Do NOT Add originator as recipient
> myencrypt.SetAddOriginatorAsRecipient(false);
> // Setup recipients.
> CSM_RecipientInfo *pRecipInfo = NULL;
> CSM_Buffer      *pbufCert = new CSM_Buffer("./certs/DaisyRsaExts.out");
> pbufCert->ConvertFileToMemory();
> pRecipInfo = new CSM_RecipientInfo(*pbufCert);
> myencrypt.m_pRecipients = new CSM_RecipientInfoLst;
> myencrypt.m_pRecipients->AppendL(pRecipInfo);
> // Encrypt
> myencrypt.Encrypt(AppLogin);
> ----------------------------------------------------------------------------
> --
> ============================================================================
> ==
> Jonathan C. Schulze-Hewett        Email: [email protected]
> Software Engineer
> Information Security Corporation  Voice: 708-445-1704
> 1011 W. Lake Street, Suite 212    Fax:   708-455-9705
> Oak Park, IL  60301               WWW:   http://www.infoseccorp.com

-- 
==============================================================================
Jonathan C. Schulze-Hewett        Email: [email protected]
Software Engineer                 
Information Security Corporation  Voice: 708-445-1704       
1011 W. Lake Street, Suite 212    Fax:   708-455-9705
Oak Park, IL  60301               WWW:   http://www.infoseccorp.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.