謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

bbs2chreader

AA挿入モジュールを公開したらしい(@陽極日記)ので後で試す。
個人的にあのAAきぼんぬDBと直結させる拡張でも書いてみるかな…と思ったけどHD無しでの開発は非常に面倒orz
そろそろバックアップとってwindowsを再インスコしたいところ
鳥計算は書き込み改造当初から考えててとあるとこ(何処か忘れた)からとってきたコードも準備してはあったけど速度面(未テストだったけど)、ライセンス面から放置してますた
2chはdes-56bitらしいけどsslでも使われるのでmozillaのどっかしらにコードがあるはず。

勘違い。
desって共通鍵なんね
freeblって見付けたけど是かな?
http://lxr.mozilla.org/mozilla/source/security/nss/lib/freebl/blapi.h
http://lxr.mozilla.org/mozilla/source/security/nss/lib/freebl/des.h
http://lxr.mozilla.org/mozilla/source/security/nss/lib/freebl/des.c

XPCOMで実装したいけどC++でのビルドの初歩でつまずくorz
C++はほとんど理解してないので変な所多杉なので修正よろ。
こんな感じかな…と脳内作成。
型変換なんか知らないよウワワーン(泣


#include "nsISupports.idl"
[scriptable, uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)]
interface b2rIDes : nsISupports
{
void init (ACString aKey);
ACString encrypt([const, array, size_is(aLen)] in octet aData, in unsigned long aLen);
ACString decrypt([const, array, size_is(aLen)] in octet aData, in unsigned long aLen);
};

#include "nsNSSComponent.h"
//自動生成したやつ
#include "b2rIDes.h"
#include "blapi.h"
class b2rDes : public b2rIDes {
public:
NS_DECL_ISUPPORTS
B2R_DECL_B2RIDES

b2rDes();
private:
virtual ~b2rDes();
DESContext mDesContext;
};

NS_IMPL_ISUPPORTS1(b2rIDes, b2rDes)

b2rDes::b2rDes()
: mDesContext(nsnull)
{
}

b2rDes::~b2rDes()
{
if (mDesContext)
DES_DestroyContext(mDesContext, PR_TRUE);
}

NS_IMETHODIMP
b2rDes::Init(const nsACString & aKey)
{
if (mDesContext)
DES_DestroyContext(mDesContext, PR_TRUE);
//第2引数って何?第4引数って是でいいの?
mDesContext = DES_CreateContext(aKey.data,"",NSS_DES,PR_TRUE);
}

NS_IMETHODIMP
b2rDes::Encrypt(const PRUint8 *data, PRUint32 len, nsACString & _retval)
{
if (!mDecContext)
return NS_ERROR_NOT_INITIALIZED;
SECStatus rv;
unsigned char *output;
unsigned int outputLen;
rv = DES_Encrypt(mDesContent, output,
&outputLen, 255,
(const unsigned char*)data, (unsigned int)len);
if(rv != SECSuccess)
return NS_ERROR_FAILURE;
_retval.Assign((const char*)output,outputLen);
return NS_OK;
}

NS_IMETHODIMP
b2rDes::Decrypt(const PRUint8 *data, PRUint32 len, nsACString & _retval)
{
if (!mDecContext)
return NS_ERROR_NOT_INITIALIZED;
SECStatus rv;
unsigned char *output;
unsigned int outputLen;
rv = DES_Decrypt(mDesContent, output,
&outputLen, 255,
(const unsigned char *)input, (unsigned int) len);
if(rv != SECSuccess)
return NS_ERROR_FAILURE;
_retval.Assign((const char*)output,outputLen);
return NS_OK;
}

是でいいはず:-)