return true;
}
+bool SetDistributor2Certificate(ValidationCore::SignatureData data,
+ common_installer::CertificateInfo* cert_info) {
+ ValidationCore::CertificateList cert_list = data.getCertList();
+ ValidationCore::CertificateList::iterator it = cert_list.begin();
+ if (it == cert_list.end()) {
+ LOG(ERROR) << "No certificates in certificate list";
+ return false;
+ }
+ cert_info->distributor2_certificate.set(*it);
+ ++it;
+ if (it == cert_list.end()) {
+ LOG(ERROR) << "No intermediate certificates in certificate list";
+ return false;
+ }
+ cert_info->distributor2_intermediate_certificate.set(*it);
+ cert_info->distributor2_root_certificate.set(data.getRootCaCertificatePtr());
+ return true;
+}
+
} // namespace
namespace common_installer {
SetPrivilegeLevel(data, level);
if (!SetDistributorCertificate(data, cert_info))
return false;
+ } else if (file_info.getFileNumber() == 2) {
+ if (!SetDistributor2Certificate(data, cert_info))
+ return false;
}
- // TODO(s89.jang): Set distributor2 certificate
break;
default:
LOG(ERROR) << "signature validation check failed : "
Property<ValidationCore::CertificatePtr> distributor_intermediate_certificate;
/** distributor_root_certificate */
Property<ValidationCore::CertificatePtr> distributor_root_certificate;
+ /** distributor2_certificate */
+ Property<ValidationCore::CertificatePtr> distributor2_certificate;
+ /** distributor2_intermediate_certificate */
+ Property<ValidationCore::CertificatePtr>
+ distributor2_intermediate_certificate;
+ /** distributor2_root_certificate */
+ Property<ValidationCore::CertificatePtr> distributor2_root_certificate;
};
/**
}
}
+ const auto& dist2_cert = cert_info.distributor2_certificate.get();
+ if (dist2_cert) {
+ if (pkgmgr_installer_set_cert_value(handle, PM_SET_DISTRIBUTOR2_SIGNER_CERT,
+ const_cast<char*>(dist2_cert->getBase64().c_str())) < 0) {
+ pkgmgr_installer_destroy_certinfo_set_handle(handle);
+ LOG(ERROR) << "pkgmgrInstallerSetCertValue fail";
+ return false;
+ }
+ }
+
+ const auto& dist2_im_cert =
+ cert_info.distributor2_intermediate_certificate.get();
+ if (dist2_im_cert) {
+ if (pkgmgr_installer_set_cert_value(handle,
+ PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT,
+ const_cast<char*>(dist2_im_cert->getBase64().c_str())) < 0) {
+ pkgmgr_installer_destroy_certinfo_set_handle(handle);
+ LOG(ERROR) << "pkgmgrInstallerSetCertValue fail";
+ return false;
+ }
+ }
+
+ const auto& dist2_root_cert = cert_info.distributor2_root_certificate.get();
+ if (dist2_root_cert) {
+ if (pkgmgr_installer_set_cert_value(handle, PM_SET_DISTRIBUTOR2_ROOT_CERT,
+ const_cast<char*>(dist2_root_cert->getBase64().c_str())) < 0) {
+ pkgmgr_installer_destroy_certinfo_set_handle(handle);
+ LOG(ERROR) << "pkgmgrInstallerSetCertValue fail";
+ return false;
+ }
+ }
+
if (pkgmgr_installer_save_certinfo(pkgid.c_str(), handle, uid) < 0) {
pkgmgr_installer_destroy_certinfo_set_handle(handle);
LOG(ERROR) << "Failed to save certificate information";