0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

パスワード攪拌関数プラグインの実装方法

Posted at

StreamRelay.NET.exe の一覧機能を呼び出しているプラグインの実装方法について説明する

StreamRelay.NET.exe/StreamRelay.NET.x86.exeには、いくつかの機能をプラグインとして実装できるようにインターフェイスを公開している。

今回は、暗号ストリームの共通鍵などを拡販するためのインターフェイスを使って、プラグインを作成する方法を記述する。


既存のプラグイン

プラグイン的には、このあたりかな



実装したプラグインの呼び出され方

プラグインで指定された引数が渡されると、一覧を取得して表示する。

という感じ。


実装するインターフェイス

以下のインターフェイスを継承したクラスを実装すればよい

  • IPlugin.dll 中の jp.dip.rocketeer.Plugins.IPluginPasswordStirringEntity インターフェイス
  • IPlugin.dll 中の jp.dip.rocketeer.Plugins.IPluginPasswordStirring インターフェイス

このクラス2つだけ実装すればよい。


jp.dip.rocketeer.Plugins.IPluginPasswordStirring インターフェイス

StreamRelay.NET.exe/他のプラグインから、IPluginPasswordStirring のCreatePasswordStirringEntityメソッドが呼ばれて、IPluginPasswordStirringEntityオブジェクトを生成して返す。
そしてIPluginPasswordStirringEntityが入力値(パスワード)を攪拌する。

という感じ。

具体的には、IPluginPasswordStirringEntity CreatePasswordStirringEntity(String iArgorithmName, ref String errMsg)が、StreamRelay.NET.exe/他のプラグインから呼び出されるので、IPluginPasswordStirringEntityのインスタンスを返す。
そして、IPluginPasswordStirringEntity#GetHash(byte[]) によって、入力値(パスワード)が攪拌される。

という感じ。


jp.dip.rocketeer.Plugins.IPluginPasswordStirring インターフェイスで定義しているメソッド/プロパティ

実装する必要があるのは以下

jp.dip.rocketeer.Plugins.IPluginPasswordStirringインターフェイスで定義されているのは、以下のとおり

Dictionary ListDescription(Boolean IsHash)
引数文字列などを返す。(引数「Boolean IsHash」は無視{別述のHash/MACオブジェクトとの関係で引数が付いているだけ})
IPluginPasswordStirringEntity CreatePasswordStirringEntity(String iArgorithmName, ref String errMsg)
名称から Hash オブジェクトの実体を作成する。「iArgorithmName」はListDescription()のキー名の方が与えられる。

jp.dip.rocketeer.Plugins.IPluginBaseインターフェイスで定義されている分については、インターフェイス IPluginBase についてを参照


jp.dip.rocketeer.Plugins.IPluginPasswordStirringEntity インターフェイスで定義しているメソッド/プロパティ

実装する必要があるのは以下

jp.dip.rocketeer.Plugins.IPluginPasswordStirringEntityインターフェイスで定義されているのは、以下のとおり

byte[] GetHash(byte[] buf)
入力値の Hash/Mac/PasswordStirring を返す
String ArgorithmName()
Hash/Mac/PasswordStirring アルゴリズム名を返す
IPluginPasswordStirringEntity Copy()
マルチスレッドを考慮して自分自身のディープコピーを返す。生成された複数の値の順番から内部や次の値や元の値を推察されないようにスレッド(ストリーム)ごとにコイツを呼び出しているので、初期化された自分自身のオブジェクトを返すようにしてほしい。

目次へ戻る

目次というか最初の一歩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?