前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0
SFBRSA
IRSA インターフェイスのラッパークラスです。
#include <SFBRSA.h.hpp>
class SFBRSA : public SFBBase;
SFMTYPEDEFWRAPPER(SFBRSA)

継承図

SFBRSA クラスの継承図

協調図

SFBRSA クラスの協調図

参照

BREW API IRSA

バグ情報

大きなデータの暗号化/復号化について
Tips すべて

IRSA インタフェースは CPU を大量に消費し、時間のかかるオペレーションです。 そのため、modulus を超えるような大きいデータの暗号化/復号化への使用はおすすめできません。

IRSA_ModExp (1/2)
バグ BREW SDK 2.0.1.5

IRSA_ModExp のヘッダファイルに誤りがあります。 正しくは、下記の通りです。

#define IRSA_ModExp(p,pbIN,cbIn,ppbOut,pcbOut,pr,pcb)
GET_PVTBL(P,IRSA)->ModExp(p,pbIN,cbIn,ppbOut,pcbOut,pr,pcb)

お手数ですがヘッダを修正してご使用ください。

補記:このバグは 2.1.0 にて修正されています。

IRSA_ModExp (2/2)
Tips BREW 2.1 以前の全ての SDK 及び実機

現在、この関数はブロッキングモードで動作します。 つまり、IRSA_RSA と同じ動作をします。

メンバ

パブリック関数
Void Decrypt( VoidConstPtr in , SInt32 inLength , VoidPtr out , SInt32Ptr outLength , SInt32 pad , UInt32Ptr result , AEECallback* callback )
Decrypt( SFXBufferConstRef in , SFXBufferPtr out , SInt32Ptr outLength , SInt32 pad , UInt32Ptr result , AEECallback* callback )
データの暗号解読を行います。
Void Encrypt( VoidConstPtr in , SInt32 inLength , VoidPtr out , SInt32Ptr outLength , SInt32 pad , UInt32Ptr result , AEECallback* callback )
Encrypt( SFXBufferConstRef in , SFXBufferPtr out , SInt32Ptr outLength , SInt32 pad , UInt32Ptr result , AEECallback* callback )
データの暗号化を行います。
SFCError Init( VoidConstPtr modulus , SInt32 modSize , VoidConstPtr exponent , SInt32 expSize )
Init( SFXBufferConstRef modulus , SFXBufferConstRef exponent )
RSAを使用して暗号化または暗号解読の鍵を初期化します。
Void ModExp( VoidConstPtr in , SInt32 inLength , VoidHandle out , SInt32Ptr outLength , UInt32Ptr result , AEECallback* callback )
RSA アルゴリズムの基本操作である、基本的なモジュラ指数演算を実行します。こ れは、SFBRSA::RSA() と同様の動作をノンブロッキングに行う関数です。 ※現在、このAPIはブロッキングモードで動作します。
static
SFBRSASmp
NewInstance( Void )
SFBRSA インターフェイスのインスタンスを取得します。
SFCError RSA( VoidConstPtr in , SInt32 available , VoidHandle out , SInt32Ptr outSize , SInt32 reserved )
RSAを使用して暗号化または暗号解読を行います。
Void VerifySig( VoidConstPtr sig , SInt32 sigLength , VoidConstPtr digest , SInt32 digestLength , SInt32 type , UInt32Ptr result , AEECallback* callback )
VerifySig( SFXBufferConstRef sig , SFXBufferConstRef digest , SInt32 type , UInt32Ptr result , AEECallback* callback )
署名を検証します。

SFBRSA::Decrypt
データの暗号解読を行います。
[ public ]
Void Decrypt(
    VoidConstPtr in         // 暗号解読するデータのバッファへのポインタ。
    SInt32 inLength         // 入力バッファの長さ。
    VoidPtr out             // 暗号化されたデータを格納するバッファへのポインタ。コール側で割り当てる。
    SInt32Ptr outLength     // 入力時は、出力バッファの長さ。出力時は、データの長さ。
    SInt32 pad              // 使用するパディングのタイプ。
    UInt32Ptr result        // 結果コード。
    AEECallback* callback   // 完了コールバック。
);
[ public ]
Void Decrypt(
    SFXBufferConstRef in    // 暗号解読するデータのバッファへのポインタ。
    SFXBufferPtr out        // 暗号化されたデータを格納するバッファへのポインタ。
    SInt32Ptr outLength     // 入力時は、出力バッファの長さ。出力時は、データの長さ。
    SInt32 pad              // 使用するパディングのタイプ。
    UInt32Ptr result        // 結果コード。
    AEECallback* callback   // 完了コールバック。
);

解説

注意:バッファサイズの上限は、API呼び出しの変数の型が SInt32 なので、 SInt32 の値です。

参照

BREW API IRSA_Decrypt


SFBRSA::Encrypt
データの暗号化を行います。
[ public ]
Void Encrypt(
    VoidConstPtr in         // 暗号化するデータのバッファへのポインタ。
    SInt32 inLength         // 入力バッファの長さ。
    VoidPtr out             // 暗号化されたデータを格納するバッファへのポインタ。コール側で割り当てる。
    SInt32Ptr outLength     // 入力時は、出力バッファの長さ。出力時は、データの長さ。
    SInt32 pad              // 使用するパディングのタイプ。
    UInt32Ptr result        // 結果コード。
    AEECallback* callback   // 完了コールバック。
);
[ public ]
Void Encrypt(
    SFXBufferConstRef in    // 暗号化するデータのバッファへのポインタ。
    SFXBufferPtr out        // 暗号化されたデータを格納するバッファへのポインタ。
    SInt32Ptr outLength     // 入力時は、出力バッファの長さ。出力時は、データの長さ。
    SInt32 pad              // 使用するパディングのタイプ。
    UInt32Ptr result        // 結果コード。
    AEECallback* callback   // 完了コールバック。
);

解説

注意:バッファサイズの上限は、API呼び出しの変数の型が SInt32 なので、 SInt32 の値です。

参照

BREW API IRSA_Encrypt


SFBRSA::Init
RSAを使用して暗号化または暗号解読の鍵を初期化します。
[ public ]
SFCError Init(
    VoidConstPtr modulus    // モジュラへのポインタ。
    SInt32 modSize          // モジュラサイズ(バイト数)。
    VoidConstPtr exponent   // 公開指数または秘密指数へのポインタ。
    SInt32 expSize          // 公開指数または秘密指数のサイズ(バイト数)。
);
[ public ]
SFCError Init(
    SFXBufferConstRef modulus    // モジュラを格納したバッファ
    SFXBufferConstRef exponent   // 公開指数または秘密指数を格納したバッファ
);

参照

BREW API IRSA_Init


SFBRSA::ModExp
RSA アルゴリズムの基本操作である、基本的なモジュラ指数演算を実行します。こ れは、SFBRSA::RSA() と同様の動作をノンブロッキングに行う関数です。 ※現在、このAPIはブロッキングモードで動作します。
[ public ]
Void ModExp(
    VoidConstPtr in         // 入力バッファへのポインタ。
    SInt32 inLength         // 入力データの長さ。
    VoidHandle out          // 結果へのポインタ。
    SInt32Ptr outLength     // 結果データの長さ。
    UInt32Ptr result        // 演算結果用のストレージ。
    AEECallback* callback   // 完了時にコールするユーザー定義のコールバック。
);

解説

注意:バッファサイズの上限は、API呼び出しの変数の型が SInt32 なので、 SInt32 の値です。

バージョン

この関数は、BREW 2.1 以降でのみ使用可能です。

参照

BREW API IRSA_ModExp


SFBRSA::NewInstance
SFBRSA インターフェイスのインスタンスを取得します。
[ public, static ]
SFBRSASmp NewInstance(Void);

SFBRSA::RSA
RSAを使用して暗号化または暗号解読を行います。
[ public ]
SFCError RSA(
    VoidConstPtr in     // 暗号化/暗号解読するデータへのポインタ。
    SInt32 available    // 入力データのサイズ(バイト数)。
    VoidHandle out      // 暗号化/暗号解読されたデータを格納するバッファ。
    SInt32Ptr outSize   // 予約する出力サイズ(バイト数)。必ず 0(ゼロ)を指定する。
    SInt32 reserved     // 0 を設定する。
);

参照

BREW API IRSA_RSA


SFBRSA::VerifySig
署名を検証します。
[ public ]
Void VerifySig(
    VoidConstPtr sig        // 署名を格納するバッファへのポインタ。
    SInt32 sigLength        // 署名の長さ。
    VoidConstPtr digest     // ダイジェストを格納するバッファへのポインタ。
    SInt32 digestLength     // ダイジェストの長さ。
    SInt32 type             // AEE_RSA_SIG_ の1つ。
    UInt32Ptr result        // 結果コード。
    AEECallback* callback   // ユーザー定義のコールバックルーチンへのポインタ。
);
[ public ]
Void VerifySig(
    SFXBufferConstRef sig      // 署名を格納するバッファへのポインタ。
    SFXBufferConstRef digest   // ダイジェストを格納するバッファへのポインタ。
    SInt32 type                // AEE_RSA_SIG_ の1つ。
    UInt32Ptr result           // 結果コード。
    AEECallback* callback      // ユーザー定義のコールバックルーチンへのポインタ。
);

参照

BREW API IRSA_VerifySig