sample:パッケージに含まれる readme の改訂。

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_eFuse@214 ff987cc8-cf2f-4642-8568-d52cce064691
This commit is contained in:
n2460 2013-06-06 06:29:26 +00:00
parent be5d371dbc
commit 245d933cd7

View File

@ -1,71 +1,107 @@
CTR - ID生成関数について 2009/09/30 CTR - ID生成関数について : 2013/06/05
----------------------------
要、opensslライブラリバージョン0.9.8以上)
現在、openssl-1.0.0-beta2とopenssl-0.9.8kでテスト中。
----------------------------- -----------------------------
ファイル構成: ファイル構成
readme.txt readme.txt
readme_openssl.txt このファイルです。
LICENSE_en.txt
LICENSE_jp.txt readme_openssl.txt
 cr_generate_id.h LICENSE_en.txt
 cr_generate_id.c LICENSE_jp.txt
 cr_alloc.h ID 生成関数ライブラリは OpenSSL の機能を一部利用しているため、これらのライセンスファイルを含んでいます。
 cr_alloc.c
 cr_gen_id_rsa_key_priv.c libgenid.a
 cr_gen_id_rsa_key_priv.h ID 生成関数のライブラリファイルです。
 cr_gen_id_rsa_key_pub.c
 cr_gen_id_rsa_key_pub.h cr_generate_id.h
maim.c(使用サンプル) 上記ライブラリのヘッダファイルです。
Makefile(Windows cygwin環境用)
function_spec.pdf
ID 生成関数の仕様について記述しています。
sample.c
util.c
util.h
Makefile
ID 生成関数を使った動作サンプルです。
---------------------------- ----------------------------
関数仕様: 関数仕様
#define CR_ID_BUF_SIZE (2048/8) function_spec.pdf をご参照下さい。
#define CR_NUM_OF_SERIAL 5
typedef signed char s8; cr_generate_id 関数の実行速度は
typedef unsigned char u8; Intel Pentium4 3.2GHz CPU にて 約 85 msec です。
typedef unsigned short u16;
typedef unsigned long u32;
typedef unsigned long long u64;
int cr_generate_id(u32 counter[CR_NUM_OF_SERIAL], u8 id[ID_BUF_SIZE]);
/*
Core2 Duo 2.66GHz 2GB で約0.016sec
*/
---------------------------- ----------------------------
使用サンプル サンプル
main() 展開したディレクトリの中で make を実行すると gen_id プログラムが作成されます。
このプログラムは eFuseID を生成するサンプルプログラムです。
起動時にはボンディングオプションの指定が必要です。
$ ./gen_id 00
プログラム中でキーボードからの入力受付を行います。
以下のキーに対応しています。
p : デバイス ID とそれから生成される eFuseID データ、そして生成に掛かった平均時間を表示します。
s : デバイス ID[0] をファイル名として実行ディレクトリにバイナリとして保存します。
q : プログラムを終了します。
以下、sample.c の一部を抜粋します。
util.c はユーティリティ関数を集めたもので ID 生成関数ライブラリで必要なものではありません。
int main(int argc, char* argv[])
{ {
u8 id_buf[CR_ID_BUF_SIZE]; /* 256byte(2048bit) */ --- 省略 ---
u32 counter_array[CR_NUM_OF_SERIAL];
u32 counter0 = 1; // cr_generate_id を使用する前に呼び出す
u64 counter1 = 2; ret_code = cr_generate_id_initialize( id_buf );
u64 counter2 = 3; if ( ret_code != CR_GENID_SUCCESS )
{
printf( "error : cr_generate_id_initialize\n" );
return -1;
}
printf("done.\n");
--- 省略 ---
while( 1 ) { for ( i = 1; i < 0xffffffff; i++ )
counter_array[0] = counter0; {
counter_array[1] = (u32)(counter1 & 0xffffffff );
counter_array[2] = (u32)( (counter1 >> 32) & 0xffffffff );
counter_array[3] = (u32)(counter2 & 0xffffffff );
counter_array[4] = (u32)( (counter2 >> 32) & 0xffffffff );
if( 0 != cr_generate_id(counter_array, id_buf) ) { --- 省略 ---
fprintf(stderr,"cr_generate_id failed c=0x%08x\n",counter0);
// ID 生成
time_start = gettimeofday_sec();
ret_code = cr_generate_id( device_id, id_buf, bonding_option );
if( ret_code != CR_GENID_SUCCESS )
{
fprintf(stderr, "cr_generate_id failed c=0x%08x\n", counter0);
}
else
{
time_end = gettimeofday_sec();
time_total += (long double)(time_end - time_start);
time_count++;
}
--- 省略 ---
}
end:
--- 省略 ---
// cr_generate_id を使用した後に呼び出す
if ( cr_generate_id_finalize( id_buf ) != CR_GENID_SUCCESS )
{
printf( "error : cr_generate_id_finalize\n" );
return 0; // error
} }
else {
fwrite(id, CR_ID_BUF_SIZE, 1, fp); printf( "end of main.\n" );
}
counter0++; return 0;
counter1 += (u64)rand();
counter2 += (u64)rand();
}
} }