implemented access to PTS file measurement database
This commit is contained in:
@@ -0,0 +1,245 @@
|
|||||||
|
/* Products */
|
||||||
|
|
||||||
|
INSERT INTO products (
|
||||||
|
name
|
||||||
|
) VALUES (
|
||||||
|
'Ubuntu 11.4 i686'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO products (
|
||||||
|
name
|
||||||
|
) VALUES (
|
||||||
|
'Ubuntu 11.4 x86_64'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO products (
|
||||||
|
name
|
||||||
|
) VALUES (
|
||||||
|
'CentOS release 5.6 (Final) x86_64'
|
||||||
|
);
|
||||||
|
|
||||||
|
/* Files */
|
||||||
|
|
||||||
|
INSERT INTO files (
|
||||||
|
type, path
|
||||||
|
) VALUES (
|
||||||
|
0, '/lib/i386-linux-gnu/libdl.so.2'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO files (
|
||||||
|
type, path
|
||||||
|
) VALUES (
|
||||||
|
0, '/lib/x86_64-linux-gnu/libdl.so.2'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO files (
|
||||||
|
type, path
|
||||||
|
) VALUES (
|
||||||
|
0, '/lib/libdl.so.2'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO files (
|
||||||
|
type, path
|
||||||
|
) VALUES (
|
||||||
|
0, '/sbin/iptables'
|
||||||
|
);
|
||||||
|
INSERT INTO files (
|
||||||
|
type, path
|
||||||
|
) VALUES (
|
||||||
|
0, '/lib/libxtables.so.5'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
1, 1
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
1, 4
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
1, 5
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
2, 2
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
2, 4
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
2, 5
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
3, 3
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO product_file (
|
||||||
|
product, file
|
||||||
|
) VALUES (
|
||||||
|
3, 4
|
||||||
|
);
|
||||||
|
|
||||||
|
/* File Hashes */
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
1, 1, 32768, X'409bb1a97e26ea1144cdd6801b8159f17f376b8f'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
1, 1, 16384, X'675172775cfd2b73ed1e249e4a730921f06c2f86fffdce4c71674cc654f37ed7'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
1, 1, 8192, X'abc8ce3fc99b6dcec6745ffc2f59e35372b9b126491480d04b0f93076beded06cccb27b61f1170868fada8cddefa7be4'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
2, 2, 32768, X'2a4047437e6fb346e2d854fc415e16b80e75bf6b'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
2, 2, 16384, X'86aa0bf93dade999277d963338402ed437271f3436f594a49ffca85b6c487523'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
2, 2, 8192, X'6090441219c0b478d294ae88e006d85ac0d94464573bcca7d180618a612bd170e3ee47c1545861b0f06fe0db85544c59'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
3, 3, 32768, X'07d8c0218a5b3469b409dc95cf8f77a341a595fb'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
3, 3, 16384, X'b083699fbc4c9f9e0d463361118904a3832670ad2fe3d6b42f811061188d509f'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
3, 3, 8192, X'b14908de476467a11a7a98835d1cf8317c7b80a684692426ddd7b0014e00b70b3d1b4fc1dd02ad440447612ee9dadb52'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 1, 32768, X'ff6deca0eeb7a257205c5f0ab5f5d821ea184098'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 1, 16384, X'5c84fdf7c529d3c65a001587eda641fe489f83961a621fe514e7852a842690d6'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 1, 8192, X'8bd699f85f5b3efb27204b4699c518f871ef245d03b4bf8d1cc00456025017546030c2f493525754cffcd24cdbc03b21'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 163842, 32768, X'1118805b490051637e93e592f4c71e0ee78a2422'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 2, 16384, X'5ea7229ebef5dc8f9fb2118676b773dd62cf89dc21657e3b8fbbcbc70ee24bd3'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 2, 8192, X'3b8da9e704e644eb7b196981624a2f6826c401d689e00ba47e42ff46351d27c6b9e91b1e8351ee01f66e5244b4c2a9b0'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 3, 32768, X'b5cd500ec15d6bfcae15e0af1dc121df7114b97d'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 3, 16384, X'b94f1cba12abb0ec79d207142526388ec0d127c4f2aad4a46a623a1f69bac84f'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
4, 3, 8192, X'6663d66ff0e93b1b8a1edcdbe45d64834e29dc9c2b1d23126fd370a85b2c56da5cadcbc65b6e8afbb1e18bea8e413bd1'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
5, 1, 32768, X'7a3ca72158e60b0c91e48a420848f1b693aea26c'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
5, 1, 16384, X'f9693c7d36c087d51f5012897fa0e8bb94081854d080c84f831f4d693d22f645'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
5, 1, 8192, X'4ec135e54c8840ab575fcdf00c66f996f763863ad30800b0f0a0b02e7899697d6ab9ccfe185ccbc16c19f38d0a27becb'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
5, 2, 32768, X'5d36a26856021d68a42f8bd7ca22365579d43891'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
5, 2, 16384, X'411be0558ad0cef33b437dafeed40104917e2079646524145abf9d05ddc6c1c5'
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO file_hashes (
|
||||||
|
file, product, algo, hash
|
||||||
|
) VALUES (
|
||||||
|
5, 2, 8192, X'237f4691f9b780bec7aff217d64a9780ceed2973a41e86c92e0d6dab81cc5d13a9b99ba408302264f5665de1f42ef6e1'
|
||||||
|
);
|
||||||
|
|
||||||
@@ -269,10 +269,12 @@ static TNC_Result send_message(TNC_ConnectionID connection_id)
|
|||||||
measurement_req_entry_t *entry;
|
measurement_req_entry_t *entry;
|
||||||
pts_meas_algorithms_t communicated_caps;
|
pts_meas_algorithms_t communicated_caps;
|
||||||
u_int32_t delimiter = SOLIDUS_UTF;
|
u_int32_t delimiter = SOLIDUS_UTF;
|
||||||
|
int id, type;
|
||||||
|
char *product, *path;
|
||||||
|
|
||||||
/* Send Get TPM Version Information attribute */
|
/* Send Get TPM Version Information attribute */
|
||||||
communicated_caps = pts->get_proto_caps(pts);
|
communicated_caps = pts->get_proto_caps(pts);
|
||||||
if(communicated_caps & PTS_PROTO_CAPS_T)
|
if (communicated_caps & PTS_PROTO_CAPS_T)
|
||||||
{
|
{
|
||||||
pa_tnc_attr_t *attr_get_tpm_version, *attr_get_aik;
|
pa_tnc_attr_t *attr_get_tpm_version, *attr_get_aik;
|
||||||
|
|
||||||
@@ -291,6 +293,23 @@ static TNC_Result send_message(TNC_ConnectionID connection_id)
|
|||||||
/**
|
/**
|
||||||
* Add files to measure to PTS Request File Measurement attribute
|
* Add files to measure to PTS Request File Measurement attribute
|
||||||
*/
|
*/
|
||||||
|
product = "Ubuntu 11.4 i686";
|
||||||
|
|
||||||
|
if (!pts_db)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
enumerator = pts_db->create_file_enumerator(pts_db, product);
|
||||||
|
if (!enumerator)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while (enumerator->enumerate(enumerator, &id, &type, &path))
|
||||||
|
{
|
||||||
|
DBG2(DBG_IMV, "id = %d, type = %d, path = '%s'", id, type, path);
|
||||||
|
}
|
||||||
|
enumerator->destroy(enumerator);
|
||||||
|
|
||||||
enumerator = file_list->create_enumerator(file_list);
|
enumerator = file_list->create_enumerator(file_list);
|
||||||
while (enumerator->enumerate(enumerator, &entry))
|
while (enumerator->enumerate(enumerator, &entry))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ DROP TABLE IF EXISTS files;
|
|||||||
CREATE TABLE files (
|
CREATE TABLE files (
|
||||||
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
type INTEGER NOT NULL,
|
type INTEGER NOT NULL,
|
||||||
path TEXT NOT NULL,
|
path TEXT NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
DROP TABLE IF EXISTS products;
|
DROP TABLE IF EXISTS products;
|
||||||
CREATE TABLE products (
|
CREATE TABLE products (
|
||||||
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL
|
||||||
);
|
);
|
||||||
DROP INDEX IF EXISTS products_name;
|
DROP INDEX IF EXISTS products_name;
|
||||||
CREATE INDEX products_name ON products (
|
CREATE INDEX products_name ON products (
|
||||||
@@ -24,3 +24,12 @@ CREATE TABLE product_file (
|
|||||||
PRIMARY KEY (product, file)
|
PRIMARY KEY (product, file)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS file_hashes;
|
||||||
|
CREATE TABLE file_hashes (
|
||||||
|
file INTEGER NOT NULL,
|
||||||
|
product INTEGER NOT NULL,
|
||||||
|
algo INTEGER NOT NULL,
|
||||||
|
hash BLOB NOT NULL,
|
||||||
|
PRIMARY KEY(file, product, algo)
|
||||||
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -40,10 +40,17 @@ struct private_pts_database_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
METHOD(pts_database_t, create_file_enumerator, enumerator_t*,
|
METHOD(pts_database_t, create_file_enumerator, enumerator_t*,
|
||||||
private_pts_database_t *this, char *product, char *version)
|
private_pts_database_t *this, char *product)
|
||||||
{
|
{
|
||||||
enumerator_t *e = NULL;
|
enumerator_t *e;
|
||||||
|
|
||||||
|
/* look for all entries belonging to a product in the files table */
|
||||||
|
e = this->db->query(this->db,
|
||||||
|
"SELECT f.id, f.type, f.path FROM files AS f "
|
||||||
|
"JOIN product_file AS pf ON f.id = pf.file "
|
||||||
|
"JOIN products AS p ON p.id = pf.product "
|
||||||
|
"WHERE p.name = ?",
|
||||||
|
DB_TEXT, product, DB_INT, DB_INT, DB_TEXT);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +78,8 @@ pts_database_t *pts_database_create(char *uri)
|
|||||||
|
|
||||||
if (!this->db)
|
if (!this->db)
|
||||||
{
|
{
|
||||||
DBG1(DBG_TNC, "pts failed to connect to file database");
|
DBG1(DBG_TNC, "failed to connect to PTS file measurement database '%s'",
|
||||||
|
uri);
|
||||||
free(this);
|
free(this);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,11 +35,9 @@ struct pts_database_t {
|
|||||||
* Get files to be measured by PTS
|
* Get files to be measured by PTS
|
||||||
*
|
*
|
||||||
* @product software product (os, vpn client, etc.)
|
* @product software product (os, vpn client, etc.)
|
||||||
* @param version release version
|
|
||||||
* @return enumerator over all files matching a given release
|
* @return enumerator over all files matching a given release
|
||||||
*/
|
*/
|
||||||
enumerator_t* (*create_file_enumerator)(pts_database_t *this, char *product,
|
enumerator_t* (*create_file_enumerator)(pts_database_t *this, char *product);
|
||||||
char *version);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroys a pts_database_t object.
|
* Destroys a pts_database_t object.
|
||||||
|
|||||||
Reference in New Issue
Block a user