///|
/// CLI Demonstration Entrypoint for moonbit-sse
fn main {
println("=================================================================")
println(" moonbit-sse: Searchable Symmetric Encryption & Privacy IR ")
println("=================================================================")
let master_key = @crypto.hex_to_bytes(
"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
)
let trapdoor_gen = @trapdoor.TrapdoorGenerator::new(master_key)
let sample_token = trapdoor_gen.generate_search_token("privacy", 1U)
println(
"[1] Initializing Encrypted Database Engine (Token len: " +
sample_token.get_token().length().to_string() +
")...",
)
let db = @engine.EncryptedDatabase::new(master_key)
println(
"[2] Indexing Sample Documents into the dynamic SSE reference engine...",
)
let doc1 = @engine.Document::new(
1,
"MoonBit Modern Toolchain",
"Fast compact Wasm and native compiler with rich cryptographic ecosystem",
["moonbit", "wasm", "compiler"],
1700000000UL,
)
let doc2 = @engine.Document::new(
2,
"Searchable Symmetric Encryption",
"Dynamic encrypted inverted index for query experiments",
["sse", "crypto", "privacy"],
1700000100UL,
)
let doc3 = @engine.Document::new(
3,
"Oblivious RAM Path Protocol",
"Path ORAM-shaped data structure for access-trace experiments",
["oram", "privacy", "security"],
1700000200UL,
)
let doc4 = @engine.Document::new(
4,
"Private Information Retrieval",
"Information-theoretic two-server PIR enabling query privacy without server collusion",
["pir", "privacy", "database"],
1700000300UL,
)
db.insert_document(doc1)
db.insert_document(doc2)
db.insert_document(doc3)
db.insert_document(doc4)
println(" Successfully indexed 4 encrypted documents.")
println("[3] Executing Encrypted Keyword Searches:")
let res_privacy = db.search_keyword("privacy")
println(
" Query keyword: 'privacy' -> Found " +
res_privacy.doc_ids.length().to_string() +
" matching document(s)",
)
for i in 0.. c
None => "N/A"
}
println(" - Doc ID " + doc_id.to_string() + ": " + content)
}
println("[4] Multi-Keyword Conjunctive Search:")
let conj_kws : Array[String] = ["privacy", "security"]
let res_conj = db.search_conjunctive(conj_kws)
println(
" Query: 'privacy' AND 'security' -> Matches: " +
res_conj.doc_ids.length().to_string(),
)
for i in 0..