void session::connect(const std::string& db) { _con.connect(db); _session.setConnection(_con); _session.mapClass<model::muda>("muda"); _session.mapClass<model::muda_list>("mlist"); _session.mapClass<model::user>("muser"); _session.mapClass<model::auth_info>("auths"); _session.mapClass<model::auth_info::AuthIdentityType>("auth_identity"); _session.mapClass<model::auth_info::AuthTokenType>("auth_token"); _users.reset(new user_database{_session}); dbo::Transaction t{_session}; try { _session.createTables(); auto guest = _users->registerNew(); guest.addIdentity(wo::Identity::LoginName, "guest"); password_service.updatePassword(guest, "guest"); Wt::log("info") << "Database created"; } catch(std::exception& e) { Wt::log("info") << "Using existing database: " << e.what(); } t.commit(); }
void AbstractUserDatabase::setIdentity(const User& user, const std::string& provider, const WT_USTRING& id) { removeIdentity(user, provider); addIdentity(user, provider, id); }
void InMemoryPibImpl::setDefaultIdentity(const Name& identityName) { addIdentity(identityName); m_defaultIdentity = identityName; m_hasDefaultIdentity = true; }
BOOST_FIXTURE_TEST_CASE(ExportIdentity, IdentityManagementFixture) { Name identity("/TestKeyChain/ExportIdentity/"); identity.appendVersion(); addIdentity(identity); shared_ptr<SecuredBag> exported = m_keyChain.exportIdentity(identity, "1234"); Block block = exported->wireEncode(); Name keyName = m_keyChain.getDefaultKeyNameForIdentity(identity); Name certName = m_keyChain.getDefaultCertificateNameForKey(keyName); m_keyChain.deleteIdentity(identity); BOOST_CHECK_EQUAL(m_keyChain.doesIdentityExist(identity), false); BOOST_CHECK_EQUAL(m_keyChain.doesPublicKeyExist(keyName), false); BOOST_CHECK_EQUAL(m_keyChain.doesKeyExistInTpm(keyName, KeyClass::PRIVATE), false); BOOST_CHECK_EQUAL(m_keyChain.doesKeyExistInTpm(keyName, KeyClass::PUBLIC), false); BOOST_CHECK_EQUAL(m_keyChain.doesCertificateExist(certName), false); SecuredBag imported; imported.wireDecode(block); m_keyChain.importIdentity(imported, "1234"); BOOST_CHECK(m_keyChain.doesIdentityExist(identity)); BOOST_CHECK(m_keyChain.doesPublicKeyExist(keyName)); BOOST_CHECK(m_keyChain.doesKeyExistInTpm(keyName, KeyClass::PRIVATE)); BOOST_CHECK(m_keyChain.doesKeyExistInTpm(keyName, KeyClass::PUBLIC)); BOOST_CHECK(m_keyChain.doesCertificateExist(certName)); }
Identity& Pib::setDefaultIdentity(const Name& identityName) { m_defaultIdentity = addIdentity(identityName); m_hasDefaultIdentity = true; m_impl->setDefaultIdentity(identityName); return m_defaultIdentity; }
void SecPublicInfoMemory::addPublicKey(const Name& keyName, KeyType keyType, const PublicKey& publicKey) { Name identityName = keyName.getPrefix(-1); addIdentity(identityName); m_keyStore[keyName.toUri()] = make_shared<KeyRecord>(keyType, publicKey); }
void SecPublicInfoMemory::addCertificate(const IdentityCertificate& certificate) { const Name& certificateName = certificate.getName(); const Name& keyName = certificate.getPublicKeyName(); const Name& identity = keyName.getPrefix(-1); addIdentity(identity); addPublicKey(keyName, KEY_TYPE_RSA, certificate.getPublicKeyInfo()); m_certificateStore[certificateName.toUri()] = make_shared<IdentityCertificate>(certificate); }
void MemoryIdentityStorage::addKey(const Name& keyName, KeyType keyType, const Blob& publicKeyDer) { Name identityName = keyName.getSubName(0, keyName.size() - 1); addIdentity(identityName); if (doesKeyExist(keyName)) throw SecurityException("a key with the same name already exists!"); keyStore_[keyName.toUri()] = ptr_lib::make_shared<KeyRecord>(keyType, publicKeyDer); }
void SecPublicInfoMemory::addPublicKey(const Name& keyName, KeyType keyType, const PublicKey& publicKey) { Name identityName = keyName.getSubName(0, keyName.size() - 1); if (!doesIdentityExist(identityName)) addIdentity(identityName); if (doesPublicKeyExist(keyName)) throw Error("a key with the same name already exists!"); keyStore_[keyName.toUri()] = ptr_lib::make_shared<KeyRecord>(keyType, publicKey); }
BOOST_FIXTURE_TEST_CASE(IdCert, IdCertFixture) { Name identity("/TestIo/IdCert"); identity.appendVersion(); BOOST_REQUIRE(addIdentity(identity, RsaKeyParams())); Name certName = m_keyChain.getDefaultCertificateNameForIdentity(identity); shared_ptr<security::v1::IdentityCertificate> idCert; BOOST_REQUIRE_NO_THROW(idCert = m_keyChain.getCertificate(certName)); io::save(*idCert, filename); shared_ptr<security::v1::IdentityCertificate> readCert = io::load<security::v1::IdentityCertificate>(filename); BOOST_REQUIRE(readCert != nullptr); BOOST_CHECK_EQUAL(idCert->getName(), readCert->getName()); }
security::Identity IdentityManagementFixture::addSubCertificate(const Name& subIdentityName, const security::Identity& issuer, const KeyParams& params) { auto subIdentity = addIdentity(subIdentityName, params); v2::Certificate request = subIdentity.getDefaultKey().getDefaultCertificate(); request.setName(request.getKeyName().append("parent").appendVersion()); SignatureInfo info; auto now = time::system_clock::now(); info.setValidityPeriod(security::ValidityPeriod(now, now + 7300_days)); v2::AdditionalDescription description; description.set("type", "sub-certificate"); info.appendTypeSpecificTlv(description.wireEncode()); m_keyChain.sign(request, signingByIdentity(issuer).setSignatureInfo(info)); m_keyChain.setDefaultCertificate(subIdentity.getDefaultKey(), request); return subIdentity; }
int64_t PibDb::addKey(const Name& keyName, const PublicKey& key) { if (keyName.empty()) return 0; Name&& identity = keyName.getPrefix(-1); if (!hasIdentity(identity)) addIdentity(identity); sqlite3_stmt* statement; sqlite3_prepare_v2(m_database, "INSERT INTO keys (identity_id, key_name, key_type, key_bits) \ values ((SELECT id FROM identities WHERE identity=?), ?, ?, ?)", -1, &statement, nullptr); sqlite3_bind_block(statement, 1, identity.wireEncode(), SQLITE_TRANSIENT); sqlite3_bind_block(statement, 2, keyName.wireEncode(), SQLITE_TRANSIENT); sqlite3_bind_int(statement, 3, key.getKeyType()); sqlite3_bind_blob(statement, 4, key.get().buf(), key.get().size(), SQLITE_STATIC); sqlite3_step(statement); sqlite3_finalize(statement); return sqlite3_last_insert_rowid(m_database); }
/** Constructor */ IdDialog::IdDialog(QWidget *parent) : RsGxsUpdateBroadcastPage(rsIdentity, parent), ui(new Ui::IdDialog) { ui->setupUi(this); mIdQueue = NULL; /* Setup UI helper */ mStateHelper = new UIStateHelper(this); // mStateHelper->addWidget(IDDIALOG_IDLIST, ui->idTreeWidget); mStateHelper->addLoadPlaceholder(IDDIALOG_IDLIST, ui->idTreeWidget, false); mStateHelper->addClear(IDDIALOG_IDLIST, ui->idTreeWidget); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId); // mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgHash); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_Type); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->toolButton_Reputation); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingOverall); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingImplicit); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingOwn); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->line_RatingPeers); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repModButton); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Accept); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Ban); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Negative); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Positive); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_Custom); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui->repMod_spinBox); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId); // mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgHash); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_Type); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingOverall); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingImplicit); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingOwn); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui->line_RatingPeers); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_Nickname); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_KeyId); // mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgHash); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgId); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_Type); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_GpgName); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->lineEdit_LastUsed); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingOverall); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingImplicit); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingOwn); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui->line_RatingPeers); //mStateHelper->addWidget(IDDIALOG_REPLIST, ui->treeWidget_RepList); //mStateHelper->addLoadPlaceholder(IDDIALOG_REPLIST, ui->treeWidget_RepList); //mStateHelper->addClear(IDDIALOG_REPLIST, ui->treeWidget_RepList); /* Connect signals */ connect(ui->toolButton_NewId, SIGNAL(clicked()), this, SLOT(addIdentity())); connect(ui->todoPushButton, SIGNAL(clicked()), this, SLOT(todo())); connect(ui->removeIdentity, SIGNAL(triggered()), this, SLOT(removeIdentity())); connect(ui->editIdentity, SIGNAL(triggered()), this, SLOT(editIdentity())); connect(ui->chatIdentity, SIGNAL(triggered()), this, SLOT(chatIdentity())); connect(ui->idTreeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(updateSelection())); connect(ui->idTreeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(IdListCustomPopupMenu(QPoint))); connect(ui->filterComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(filterComboBoxChanged())); connect(ui->filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString))); connect(ui->repModButton, SIGNAL(clicked()), this, SLOT(modifyReputation())); connect(ui->messageButton, SIGNAL(clicked()), this, SLOT(sendMsg())); ui->avlabel->setPixmap(QPixmap(":/images/user/friends64.png")); ui->headerTextLabel->setText(tr("People")); /* Initialize splitter */ ui->splitter->setStretchFactor(0, 1); ui->splitter->setStretchFactor(1, 0); QList<int> sizes; sizes << width() << 500; // Qt calculates the right sizes ui->splitter->setSizes(sizes); /* Add filter types */ ui->filterComboBox->addItem(tr("All"), RSID_FILTER_ALL); ui->filterComboBox->addItem(tr("Owned by you"), RSID_FILTER_OWNED_BY_YOU); ui->filterComboBox->addItem(tr("Linked to your node"), RSID_FILTER_YOURSELF); ui->filterComboBox->addItem(tr("Linked to neighbor nodes"), RSID_FILTER_FRIENDS); ui->filterComboBox->addItem(tr("Linked to distant nodes"), RSID_FILTER_OTHERS); ui->filterComboBox->addItem(tr("Anonymous"), RSID_FILTER_PSEUDONYMS); ui->filterComboBox->setCurrentIndex(0); /* Add filter actions */ QTreeWidgetItem *headerItem = ui->idTreeWidget->headerItem(); QString headerText = headerItem->text(RSID_COL_NICKNAME); ui->filterLineEdit->addFilter(QIcon(), headerText, RSID_COL_NICKNAME, QString("%1 %2").arg(tr("Search"), headerText)); headerText = headerItem->text(RSID_COL_KEYID); ui->filterLineEdit->addFilter(QIcon(), headerItem->text(RSID_COL_KEYID), RSID_COL_KEYID, QString("%1 %2").arg(tr("Search"), headerText)); /* Setup tree */ ui->idTreeWidget->sortByColumn(RSID_COL_NICKNAME, Qt::AscendingOrder); ui->idTreeWidget->enableColumnCustomize(true); ui->idTreeWidget->setColumnCustomizable(RSID_COL_NICKNAME, false); /* Set initial column width */ int fontWidth = QFontMetricsF(ui->idTreeWidget->font()).width("W"); ui->idTreeWidget->setColumnWidth(RSID_COL_NICKNAME, 18 * fontWidth); ui->idTreeWidget->setColumnWidth(RSID_COL_KEYID, 25 * fontWidth); ui->idTreeWidget->setColumnWidth(RSID_COL_IDTYPE, 18 * fontWidth); mIdQueue = new TokenQueue(rsIdentity->getTokenService(), this); mStateHelper->setActive(IDDIALOG_IDDETAILS, false); mStateHelper->setActive(IDDIALOG_REPLIST, false); // Hiding RepList until that part is finished. //ui->treeWidget_RepList->setVisible(false); ui->toolButton_Reputation->setVisible(false); #ifndef UNFINISHED ui->todoPushButton->hide() ; #endif QString hlp_str = tr( " <h1><img width=\"32\" src=\":/icons/help_64.png\"> Identities</h1> \ <p>In this tab you can create/edit pseudo-anonymous identities. \ </p> \ <p>Identities are used to securely identify your data: sign forum and channel posts,\ and receive feedback using Retroshare built-in email system, post comments \ after channel posts, etc.</p> \ <p> \ Identities can optionally be signed by your Retroshare node's certificate. \ Signed identities are easier to trust but are easily linked to your node's IP address. \ </p> \ <p> \ Anonymous identities allow you to anonymously interact with other users. They cannot be \ spoofed, but noone can prove who really owns a given identity. \ </p> \ ") ; registerHelpButton(ui->helpButton, hlp_str) ; // load settings processSettings(true); // hide reputation sice it's currently unused ui->reputationGroupBox->hide(); ui->tweakGroupBox->hide(); }
/* authentication service return value: -1: error -2: message out of time -3: Date header field does not match validity period of cert 1: success */ static int authservice_(struct sip_msg* msg, char* str1, char* str2) { time_t dateHFValue = -1; int retval = 0; char dateHF[MAX_TIME] = "\0"; long dateDelta = -1; /* parse all headers */ if (parse_headers(msg, HDR_EOH_F, 0)!=0) { LM_ERR("failed to parse headers\n"); return -1; } retval = getDate(dateHF, &dateHFValue, msg); switch(retval) { case 1: /* Date header field exists */ dateDelta = getDateDelta(dateHFValue); if((dateDelta >= MAXDATEDELTA_AUTH) || dateDelta < 0) { return -2; } break; case 0: /* Date header field does not exist */ if(!addDate(dateHF, &dateHFValue, msg)) { LM_ERR("addDate failed\n"); return -1; } break; case -1: LM_ERR("error reading Date header field\n"); return -1; break; } if(!authCertMatchesDate(dateHFValue)) { return -3; } /* is content len hdr found ? if(msg->content_length) { if(!addContentLength(msg)) { LM_ERR("addContentLength failed\n"); return -1; } }*/ if(!addIdentity(dateHF, msg)) { LM_ERR("addIdentity failed\n"); return -1; } if(!addIdentityInfo(msg)) { LM_ERR("addIdentityInfo failed\n"); return -1; } return 1; }
/** Constructor */ IdDialog::IdDialog(QWidget *parent) : RsGxsUpdateBroadcastPage(rsIdentity, parent) { ui.setupUi(this); mIdQueue = NULL; /* Setup UI helper */ mStateHelper = new UIStateHelper(this); mStateHelper->addWidget(IDDIALOG_IDLIST, ui.treeWidget_IdList); mStateHelper->addLoadPlaceholder(IDDIALOG_IDLIST, ui.treeWidget_IdList, false); mStateHelper->addClear(IDDIALOG_IDLIST, ui.treeWidget_IdList); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_Nickname); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_KeyId); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_GpgHash); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_GpgId); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.lineEdit_GpgName); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.toolButton_Reputation); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.toolButton_Delete); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.toolButton_EditId); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.line_RatingOverall); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.line_RatingImplicit); mStateHelper->addWidget(IDDIALOG_IDDETAILS, ui.line_RatingOwn); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_Nickname); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_GpgName); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_KeyId); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_GpgHash); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_GpgId); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.lineEdit_GpgName); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.line_RatingOverall); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.line_RatingImplicit); mStateHelper->addLoadPlaceholder(IDDIALOG_IDDETAILS, ui.line_RatingOwn); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.lineEdit_Nickname); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.lineEdit_GpgName); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.lineEdit_KeyId); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.lineEdit_GpgHash); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.lineEdit_GpgId); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.lineEdit_GpgName); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.line_RatingOverall); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.line_RatingImplicit); mStateHelper->addClear(IDDIALOG_IDDETAILS, ui.line_RatingOwn); mStateHelper->addWidget(IDDIALOG_REPLIST, ui.treeWidget_RepList); mStateHelper->addLoadPlaceholder(IDDIALOG_REPLIST, ui.treeWidget_RepList); mStateHelper->addClear(IDDIALOG_REPLIST, ui.treeWidget_RepList); /* Connect signals */ connect(ui.toolButton_NewId, SIGNAL(clicked()), this, SLOT(addIdentity())); connect(ui.todoPushButton, SIGNAL(clicked()), this, SLOT(todo())); connect(ui.toolButton_EditId, SIGNAL(clicked()), this, SLOT(editIdentity())); connect( ui.treeWidget_IdList, SIGNAL(itemSelectionChanged()), this, SLOT(updateSelection())); connect(ui.filterComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(filterComboBoxChanged())); connect(ui.filterLineEdit, SIGNAL(textChanged(QString)), this, SLOT(filterChanged(QString))); /* Add filter types */ ui.filterComboBox->addItem(tr("All"), RSID_FILTER_ALL); ui.filterComboBox->addItem(tr("Yourself"), RSID_FILTER_YOURSELF); ui.filterComboBox->addItem(tr("Friends / Friends of Friends"), RSID_FILTER_FRIENDS); ui.filterComboBox->addItem(tr("Others"), RSID_FILTER_OTHERS); ui.filterComboBox->addItem(tr("Pseudonyms"), RSID_FILTER_PSEUDONYMS); ui.filterComboBox->setCurrentIndex(0); /* Add filter actions */ QTreeWidgetItem *headerItem = ui.treeWidget_IdList->headerItem(); QString headerText = headerItem->text(RSID_COL_NICKNAME); ui.filterLineEdit->addFilter(QIcon(), headerText, RSID_COL_NICKNAME, QString("%1 %2").arg(tr("Search"), headerText)); headerText = headerItem->text(RSID_COL_KEYID); ui.filterLineEdit->addFilter(QIcon(), headerItem->text(RSID_COL_KEYID), RSID_COL_KEYID, QString("%1 %2").arg(tr("Search"), headerText)); /* Setup tree */ ui.treeWidget_IdList->sortByColumn(RSID_COL_NICKNAME, Qt::AscendingOrder); mIdQueue = new TokenQueue(rsIdentity->getTokenService(), this); mStateHelper->setActive(IDDIALOG_IDDETAILS, false); mStateHelper->setActive(IDDIALOG_REPLIST, false); }
BOOST_FIXTURE_TEST_CASE(PrepareIdentityCertificate, IdentityManagementFixture) { Name identity("/TestKeyChain/PrepareIdentityCertificate/"); identity.appendVersion(); addIdentity(identity); std::vector<v1::CertificateSubjectDescription> subjectDescription; Name lowerIdentity = identity; lowerIdentity.append("Lower").appendVersion(); Name lowerKeyName = m_keyChain.generateRsaKeyPair(lowerIdentity, true); shared_ptr<v1::IdentityCertificate> idCert = m_keyChain.prepareUnsignedIdentityCertificate(lowerKeyName, identity, time::system_clock::now(), time::system_clock::now() + time::days(365), subjectDescription); BOOST_CHECK(static_cast<bool>(idCert)); BOOST_CHECK_EQUAL(idCert->getName().getPrefix(5), Name().append(identity).append("KEY").append("Lower")); BOOST_CHECK(idCert->getFreshnessPeriod() >= time::milliseconds::zero()); shared_ptr<v1::IdentityCertificate> idCert11 = m_keyChain.prepareUnsignedIdentityCertificate(lowerKeyName, identity, time::system_clock::now(), time::system_clock::now() + time::days(365), subjectDescription, lowerIdentity); BOOST_CHECK(static_cast<bool>(idCert11)); BOOST_CHECK_EQUAL(idCert11->getName().getPrefix(6), Name().append(lowerIdentity).append("KEY")); Name anotherIdentity("/TestKeyChain/PrepareIdentityCertificate/Another/"); anotherIdentity.appendVersion(); Name anotherKeyName = m_keyChain.generateRsaKeyPair(anotherIdentity, true); shared_ptr<v1::IdentityCertificate> idCert2 = m_keyChain.prepareUnsignedIdentityCertificate(anotherKeyName, identity, time::system_clock::now(), time::system_clock::now() + time::days(365), subjectDescription); BOOST_CHECK(static_cast<bool>(idCert2)); BOOST_CHECK_EQUAL(idCert2->getName().getPrefix(5), Name().append(anotherIdentity).append("KEY")); Name wrongKeyName1; shared_ptr<v1::IdentityCertificate> idCert3 = m_keyChain.prepareUnsignedIdentityCertificate(wrongKeyName1, identity, time::system_clock::now(), time::system_clock::now() + time::days(365), subjectDescription); BOOST_CHECK_EQUAL(static_cast<bool>(idCert3), false); Name wrongKeyName2("/TestKeyChain/PrepareIdentityCertificate"); shared_ptr<v1::IdentityCertificate> idCert4 = m_keyChain.prepareUnsignedIdentityCertificate(wrongKeyName2, identity, time::system_clock::now(), time::system_clock::now() + time::days(365), subjectDescription); BOOST_CHECK_EQUAL(static_cast<bool>(idCert4), false); Name wrongKeyName3("/TestKeyChain/PrepareIdentityCertificate/ksk-1234"); shared_ptr<v1::IdentityCertificate> idCert5 = m_keyChain.prepareUnsignedIdentityCertificate(wrongKeyName3, identity, time::system_clock::now(), time::system_clock::now() + time::days(365), subjectDescription); BOOST_CHECK_EQUAL(static_cast<bool>(idCert5), false); }
void Disco::setIdentity( const std::string& category, const std::string& type, const std::string& name ) { util::clearList( m_identities ); addIdentity( category, type, name ); }