CM_RetrieveKey() abort with corrupted certificate
John Stark <[email protected]> Fri, 25 Jan 2002 15:49:01 +0000
| Newsgroups | gmane.ietf.sfl |
|---|---|
| Organization | Metanate Ltd |
| Message-ID | <[email protected]> |
We are developing an application that uses SFL version 1.10 with the corresponding release of the Certificate Management Library (1.9.3) and crypto++4.1. I have compiled the sources using both GCC 2.95.3 and GCC 2.96. One of the tests we are attempting is one where a DSA-signed RSA public-key certificate has deliberately been corrupted, invalidating its signature. (The actual change advances the expiry date by a year, leaving all of the encoding unchanged apart from one incremented character in a UTC Time string.) The CML function CM_RetrieveKey() is used to obtain a validated certification path from the corrupted certificate. On a system that has GCC 2.95.3, the CML correctly reports that the certificate has an invalid signature. On another system that has GCC 2.96, the call to CM_RetrieveKey() causes an abort, and an incomplete call stack (attached) is shown if run under GDB. I'm not sure whether the compiler version is directly relevant, or whether it's coincidental (e.g. caused by uninitialised memory). Does anyone know of any problems with using the CML to verify corrupted certificates, whether or not compiled with GCC 2.96, or whether this bug will be fixed by moving to SFL version 2.0 and the corresponding release of CML? John Stark Metanate Ltd e-mail: [email protected] Program received signal SIGABRT, Aborted. [Switching to Thread 1024 (LWP 4944)] 0x4035ea01 in __kill () from /lib/i686/libc.so.6 Current language: auto; currently c (gdb) where #0 0x4035ea01 in __kill () from /lib/i686/libc.so.6 #1 0x400305bb in raise (sig=6) at signals.c:65 #2 0x4035ff82 in abort () at ../sysdeps/generic/abort.c:88 #3 0x402eeefb in __default_terminate () at ../../gcc/libgcc2.c:3034 #4 0x402eef1a in __terminate () at ../../gcc/libgcc2.c:3034 #5 0x402efc55 in throw_helper (eh=0x8326a58, pc=0x2e, my_udata=0xbffff400, offset_p=0xbffff3fc) at ../../gcc/libgcc2.c:3168 #6 0x402eff4f in __rethrow (index=0x40efb614) at ../../gcc/libgcc2.c:3168 #7 0x40dcb6df in CSM_Free3::SMTI_Verify (this=0x2e2f2e2e, pSignerKey=0x2e2e2f2e, pDigestAlg=0x504d532f, pSignatureAlg=0x74736944, pData=0x676c412f, pSignature=0x72632f73) at ../../libcert/include/sm_apiCert.h:844 #8 0x65657246 in ?? ()