SES(System Extension Service -
システム拡張サービス) 関数一覧

SES関数/PC API/暗号化補助関数編マニュアル(PDF) お問い合わせください

プログラム制御

void _exit(void) EXF(ELプログラム)を終了
BYTE _set_response(BYTE bLen, BYTE *pbBuff) PC側に戻す値を設定

ファイル操作関数

BYTE _open(WORD wFid, HANDLE *pHandle) ファイルを開く
BYTE _close(HANDLE handle) ファイルを閉じる
BYTE _read(HANDLE, WORD wOff, BYTE bLen, BYTE* pbBuff) ファイルの読み取り
BYTE _write(HANDLE, WORD wOff, BYTE bLen, BYTE* pbBuff) ファイルへの書込み
BYTE _create(WORD wFid, WORD wSiz, BYTE bType, BYTE bFlag, HANDLE*) ファイル作成
BYTE _enable_exe(WORD wFid) _create で作成した EXFの有効化

メモリ関数

BYTE _mem_copy( void *pDest, void *pSrc, BYTE bLen) pSrcの先頭からbLenバイト分を pDestにコピーします. pSrc,pDestは重なり合ってはいけません
BYTE _mem_move( void *pDest, void *pSrc, BYTE bLen) pSrcの先頭からbLenバイト分を pDestにコピーします. pSrc,pDestは重なり合っても構いません
BYTE _mem_set( void *pDest, BYTE c, BYTE bLen) pDestの先頭から bLen バイト分 c をセット
BYTE _mempool_init( void *pStart, WORD wSize) 指定アドレスから指定サイズのメモリプールを作成
void* _malloc( WORD wSize) _mempool_initで確保したメモリプールからメモリを確保
void* _calloc( WORD wNobj, WORD wSize) _mempool_initで確保したメモリプールに0で初期化した要素の配列を確保
void* _realloc( void *pointer, WORD wSize) _mempool_initで確保したメモリプールでメモリの再割り当て
BYTE _free( void *pointer) メモリの解放
BYTE _invert( void *pvdata, BYTE bLen) 指定メモリの内容を反転
char _mem_cmp( void *pDest, void* pSrc, BYLTE bLen) 指定アドレスのメモリを比較

暗号/ハッシュ関数

BYTE _tdes_enc( BYTE *pbKey, BYTE bLen, BYTE *pbData) トリプルTDES暗号化(ECBモード)
BYTE _tdes_dec( BYTE *pbKey, BYTE bLen, BYTE *pbData) トリプルTDES復号化(ECBモード)
BYTE _des_enc( BYTE *pbKey, BYTE bLen, BYTE *pbData) DES暗号化(ECBモード)
BYTE _des_dec( BYTE *pbKey, BYTE bLen, BYTE *pbData) DES復号化(ECBモード)
BYTE _sha1_init(HASH_CONTEXT *pContext) HASH_CONTEXTの初期化
BYTE _sha1_update(HASH_CONTEXT *pContext, BYTE *pbData, BYTE bLen) sha1 ハッシュするデータの追加
BYTE _sha1_final(HASH_CONTEXT *pContext, BYTE *pbResult) sha1ハッシュの値の取得
BYTE _rsa_enc(BYTE bMode, WORD wFid, BYTE bLen, BYTE *pbData) EL内部の秘密鍵でRSA暗号化
BYTE _rsa_dec(BYTE bMode, WORD wFid, BYTE bLen, BYTE *pbData) EL内部の秘密鍵でRSA復号化
BYTE _rsa_sign(BYTE bMode, WORD wFid, BYTE bLen, BYTE *pbData) EL内部の秘密鍵で pbData で与えられたデータの署名を pbDataに返す
BYTE _rsa_veri(BYTE bMode, WORD wFid, BYTE bLen, BYTE *pbData) EL内部で算出されたハッシュ値、EL内部の公開鍵を元に署名を確認する
BYTE _rand( BYTE bLen, BYTE *pbData) ELハードウェアによる乱数の生成

タイマー関数

BYTE _set_timer( BYTE bMode, DWORD *pdwCount) タイマーの初期値と動作モードを設定
BYTE _start_timer() タイマーを開始(( 64回のCPUクロックサイクルでカウンタが1つ増加)
BYTE _stop_timer() タイマーを停止
BYTE _get_timer(DWORD *pdwCount) タイマーの値を取得
BYTE _time(time_t *ptime) リアルタイムクロックの時間を返す(GMTで1970/1/1からの秒数)
BYTE _mktime(time_t *ptime, RTC_TIME_T *ptm) RTC_TIME_T を time_t に変換
BYTE _gmtime(time_t *ptime, RTC_TIME_T *ptm) time_t から RTC_TIME_T に変換

数学関数(単精度浮動小数点数版)

float _addf(float x, float y) 加算
float _subf(float x, float y) 減算
float _multf(float x, float y) 乗算
float _divf(float x, float y) 除算
float _sinf(float x) 正弦
_cosf,_tanf,_asinf,_acosf,_atanf 等 三角関数
float _ceilf(float x) 切り上げ
float _floorf(float x) 切り捨て
float _absf(float x) 絶対値
float _fmodf(float x, float y) 剰余
_expf,_logf,_log10f,_sqrtf,_powf 等 べき乗 平方根 指数 対数 等

数学関数(倍精度浮動小数点数版)

BYTE _add(DOUBLE_T *presult, DOUBLE_T *px, DOUBLE_T *py) 加算
BYTE _sub(DOUBLE_T *presult, DOUBLE_T *px, DOUBLE_T *py) 減算
BYTE _mult(DOUBLE_T *presult, DOUBLE_T *px, DOUBLE_T *py) 乗算
BYTE _div(DOUBLE_T *presult, DOUBLE_T *px, DOUBLE_T *py) 除算
BYTE _sin(DOUBLE_T *presult, DOUBLE_T *px) 正弦
_cos,_tan,_asin,_acos,_atan 等 その他三角関数
BYTE _ceil(DOUBLE_T *presult, DOUBLE_T *px) 切り上げ
BYTE _floor(DOUBLE_T *presult, DOUBLE_T *px) 切り捨て
BYTE _abs(DOUBLE_T *presult, DOUBLE_T *px) 絶対値
BYTE _fmod(DOUBLE_T *presult, DOUBLE_T *px, DOUBLE_T *py) 剰余
_exp,_log,_log10,_sqrt,_pow,_modf,_frexp,_ldexp 等 べき乗 平方根 指数 対数 等
char _fdcmp(DOUBLE_T *px, DOUBLE_T *py) 2つの倍精度浮動小数点数の比較

型変換関数

BYTE _ftod( DOUBLE_T *presult, float *px) 単精度浮動小数点数を倍精度浮動小数点数に変換
BYTE _dtof( float *presult, DOUBLE_T *px) _ftod の逆
BYTE _ltod( DOUBLE_T *presult, long *px) 32ビット符号付数を倍精度浮動小数点数に変換
BYTE _dtol( long *presult,DOUBLE_T *px) _ltodの逆
BYTE _lltod( DOUBLE_T *presult, DWORD *px) 32ビット符号無し数を倍精度浮動小数点数に変換
BYTE _atod( DOUBLE_T *presult, char* pstr) 文字列を倍精度浮動小数点数に変換

ヘルパー関数&マクロ

LE16_TO_CC(__x__) 2バイトのリトルエンディアン変数をコンパイラがサポートするバイト列に変換
CC_TO_LE16(__x__) LE16_TO_CC(__x__)の逆変換
LE32_TO_CC(__x__) 4バイトのリトルエンディアン変数をコンパイラがサポートするバイト列に変換
CC_TO_LE32(__x__) LE32_TO_CCの逆変換
BE16_TO_CC(__x__) 2バイトのビッグエンディアン変数をコンパイラがサポートするバイト列に変換
CC_TO_BE16(__x__) BE16_TO_CC(__x__)の逆変換
BE32_TO_CC(__x__) 4バイトのビッグエンディアン変数をコンパイラがサポートするバイト列に変換
CC_TO_BE32(__x__) BE32_TO_CCの逆変換
DEFINE_AT(TYPE,NAME,ADDRESS,MEMORY) 指定アドレスに指定型/名前で変数を作成
BYTE _get_gbdata(BYTE bFlag, BYTE* pbData,
BYTE bLen)
ハードウェア情報の取得