Esempio n. 1
0
bool check_revoked(const std::vector <Packet::Ptr> & packets, const std::string & keyid){
    for(Packet::Ptr const & p: packets){
        // if a signature packet
        if (p -> get_tag() == 2){
            std::string raw = p -> raw();
            Tag2 tag2(raw);
            for(Subpacket::Ptr const & s: tag2.get_unhashed_subpackets()){
                if (s -> get_type() == 16){
                    raw = s -> raw();
                    Tag2Sub16 tag2sub16(raw);
                    // check that this signature packet is for the public key
                    if (tag2sub16.get_keyid() == keyid){
                        if ((tag2.get_type() == 0x20) || (tag2.get_type() == 0x28)){
                            return true;
                        }
                    }
                }
            }
            for(Subpacket::Ptr const & s: tag2.get_hashed_subpackets()){
                if (s -> get_type() == 16){
                    raw = s -> raw();
                    Tag2Sub16 tag2sub16(raw);
                    // check that this signature packet is for the public key
                    if (tag2sub16.get_keyid() == keyid){
                        if ((tag2.get_type() == 0x20) || (tag2.get_type() == 0x28)){
                            return true;
                        }
                    }
                }
            }
        }
    }
    return false;
}
Esempio n. 2
0
void TagTest::testCompare()
{
	Tag tag1("artist1", "artist", 1, QStringList() << "tag1");
	Tag tag2("artist1", "artist", 2, QStringList() << "tag2");
	Tag tag3("artist2", "artist", 3, QStringList() << "tag3");
	Tag tag4("artist1", "character", 4, QStringList() << "tag4");
	Tag tag5("artist1", "unknown", 5, QStringList() << "tag5");

	QCOMPARE(tag1 == tag1, true);
	QCOMPARE(tag1 == tag2, true);
	QCOMPARE(tag1 == tag3, false);
	QCOMPARE(tag1 == tag4, false);
	QCOMPARE(tag1 == tag5, true);
}
Esempio n. 3
0
	void TagElementTest()
	{
		std::basic_string<utf16_t> testTag = Transcoder::UTF8toUTF16("tagname hoge=\"fuga\" ");
		TagElement<utf16_t> tag(testTag);

		CPPUNIT_ASSERT(tag.tagName.length() == 7);

		CPPUNIT_ASSERT_MESSAGE(Transcoder::UTF16toUTF8(tag.tagName.c_str()),
							   tag.tagName == Transcoder::UTF8toUTF16("tagname"));
		CPPUNIT_ASSERT(tag.attributes.size() == 1);
		CPPUNIT_ASSERT(tag.attributes[Transcoder::UTF8toUTF16("hoge")] ==
				Transcoder::UTF8toUTF16("fuga"));

		testTag = std::basic_string<utf16_t>(Transcoder::UTF8toUTF16("tagname2"));
		TagElement<utf16_t> tag2(testTag);
		CPPUNIT_ASSERT(tag2.tagName.length() == 8);

		CPPUNIT_ASSERT(tag2.tagName == Transcoder::UTF8toUTF16("tagname2"));
		CPPUNIT_ASSERT(tag2.attributes.size() == 0);

		CPPUNIT_ASSERT_THROW(TagElement<utf16_t>(Transcoder::UTF8toUTF16("hoge fuga=123")),
							 InvalidTagException);
		CPPUNIT_ASSERT_THROW(TagElement<utf16_t>(Transcoder::UTF8toUTF16("hoge fuga=")),
							 InvalidTagException);
		CPPUNIT_ASSERT_THROW(TagElement<utf16_t>(Transcoder::UTF8toUTF16("hoge fuga\"123\"")),
							 InvalidTagException);

		TagElement<utf16_t> tag3(Transcoder::UTF8toUTF16("hoge fuga=\"\""));
		CPPUNIT_ASSERT(tag3.attributes.size() == 1);
		CPPUNIT_ASSERT(tag3.attributes[Transcoder::UTF8toUTF16("fuga")] == Transcoder::UTF8toUTF16(""));

		std::string utf8str = Transcoder::UTF16toUTF8(tag3.toString());

		const size_t pos = utf8str.find('\n');
		if (pos != std::string::npos)
			utf8str.erase(pos);

		CPPUNIT_ASSERT_MESSAGE(utf8str,
							   utf8str == "<hoge fuga=\"\" />");
	}
Esempio n. 4
0
void Table::parse(Widget *parent, std::map<int, Widget*>& widgets, tinyxml2::XMLElement *e)
{
    Widget::parse(parent, widgets, e);

    for(tinyxml2::XMLElement *e1 = e->FirstChildElement(); e1; e1 = e1->NextSiblingElement())
    {
        std::string tag1(e1->Value());
        if(tag1 == "header")
        {
            for(tinyxml2::XMLElement *e2 = e1->FirstChildElement(); e2; e2 = e2->NextSiblingElement())
            {
                std::string tag2(e2->Value() ? e2->Value() : "");
                if(tag2 != "item") continue;
                std::string itemName(e2->GetText());
                horizontalHeader.push_back(itemName);
            }
        }
        else if(tag1 == "row")
        {
            rows.resize(rows.size()+1);
            std::string rowHeader = xmlutils::getAttrStr(e1, "label", boost::lexical_cast<std::string>(rows.size()));
            verticalHeader.push_back(rowHeader);
            for(tinyxml2::XMLElement *e2 = e1->FirstChildElement(); e2; e2 = e2->NextSiblingElement())
            {
                std::string tag2(e2->Value() ? e2->Value() : "");
                if(tag2 != "item") continue;
                TableItem item;
                item.text = std::string(e2->GetText() ? e2->GetText() : "");
                item.editable = xmlutils::getAttrBool(e2, "editable", true);
                rows[rows.size()-1].push_back(item);
            }
        }
        else continue;
    }

    show_horizontal_header = xmlutils::getAttrBool(e, "show-horizontal-header", true);

    show_vertical_header = xmlutils::getAttrBool(e, "show-vertical-header", false);

    autosize_horizontal_header = xmlutils::getAttrBool(e, "autosize-horizontal-header", false);

    autosize_vertical_header = xmlutils::getAttrBool(e, "autosize-vertical-header", true);

    show_grid = xmlutils::getAttrBool(e, "show-grid", true);

    editable = xmlutils::getAttrBool(e, "editable", true);

    sortable = xmlutils::getAttrBool(e, "sortable", false);

    onCellActivate = xmlutils::getAttrStr(e, "on-cell-activate", "");

    onSelectionChange = xmlutils::getAttrStr(e, "on-selection-change", "");

    std::string select_mode_str = xmlutils::getAttrStr(e, "selection-mode", "item");
    selectionMode = QAbstractItemView::SingleSelection;
    if(select_mode_str == "item") selectionBehavior = QAbstractItemView::SelectItems;
    else if(select_mode_str == "row") selectionBehavior = QAbstractItemView::SelectRows;
    else if(select_mode_str == "column") selectionBehavior = QAbstractItemView::SelectColumns;
    else throw std::range_error("selection-mode must be one of: 'item', 'row', 'column'");

    onKeyPress = xmlutils::getAttrStr(e, "on-key-press", "");
}