Dbus プロトコルを介して "Secret Service" と通信するlibsecretライブラリを使用できます。
最初にパスワード スキーマを定義する必要があります。これは、後でトークン ストア/抽出に使用されます。
ヴァラの例:
var example_schema = new Secret.Schema ("org.yor_schema.name",Secret,SchemaFlags.NONE,
"number", Secret.SchemaAttributeType.INTEGER,
"string", Secret.SchemaAttributeType.STRING);
次に、トークンを保存する必要があります。
var attributes = new GLib.HashTable<string,string> ();
attributes["number"] = "18";
attributes["string"] = "Hello";
Secret.password_storev.begin(example_schema,attributes,Secret.COLLECTION_DFAULT,
"Label","Token",null,(obj,async_res) => {
bool res = Secret.password_store.end(async_res);
/* Password has been stored - do something ... */
});
保存されたトークンを抽出するには:
var attributes = new GLib.HashTable<string,string> ();
attributes["number"] = "18";
attributes["string"] = "Hello";
Secret.password_lookupv.begin(example_schema,attributes,null,(obj,async_res) => {
String token = Secret.password_lookup.end(async_res);
});
というパッケージ名libsecret-1
。
コンパイルするには、makefile に次のフラグを追加します。
AM_VALAFLAGS = \
--pkg=libsecret-1