// // Retrieve one certificate from the cert chain. // Positive and negative indices can be used: // [ leaf, intermed-1, ..., intermed-n, anchor ] // 0 1 ... -2 -1 // Returns NULL if unavailable for any reason. // SecCertificateRef Requirement::Context::cert(int ix) const { if (certs) { if (ix < 0) ix += certCount(); if (ix >= CFArrayGetCount(certs)) return NULL; if (CFTypeRef element = CFArrayGetValueAtIndex(certs, ix)) return SecCertificateRef(element); } return NULL; }
void CPKCS12Handler::SaveCertificatesToDiskL() { LOG_("-> CPKCS12Handler::SaveCertificatesToDiskL()"); TInt certCount(0); // first the CAs (if any; not required necessarily) if (iCACerts) { certCount = iCACerts->Count(); LOG_1(" Saving %d CA Certificates", certCount); for (TInt i = 0; i < certCount; i++) { CX509Certificate* cert = iCACerts->At(i); // Generate filename with running identifier // Use TFileName, because the function isn't stack // critical TFileName fn; fn.Format(KCAFileNameStem(), i+1); WriteToFileL(cert->Encoding(), fn); } } LOG(else LOG_(" No CA Certs found!")); // Then the user certs if (iUserCerts) { certCount = iUserCerts->Count(); LOG_1(" Saving %d User Certificates", certCount); for (TInt i = 0; i < certCount; i++) { CX509Certificate* cert = iUserCerts->At(i); TFileName fn; fn.Format(KUserCertFileNameStem(), i+1); WriteToFileL(cert->Encoding(), fn); } } LOG(else LOG_(" No User Certs found!")); LOG_("<- CPKCS12Handler::SaveCertificatesToDiskL()"); }