・SFMTのパッケージおよびコードをツリーから削除。

・GenarateECCKeyPairの引数修正

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_eFuse@33 ff987cc8-cf2f-4642-8568-d52cce064691
This commit is contained in:
(no author) 2009-12-22 08:52:51 +00:00
parent 1685d4ae68
commit 6c97e11eea
7 changed files with 10 additions and 46 deletions

View File

@ -4,14 +4,13 @@
# nm generate_id.o | grep " [T|B|D] " # nm generate_id.o | grep " [T|B|D] "
# nm ../rsa_keysrcgen/rsa1_key.o | grep " [T|B|D] " # nm ../rsa_keysrcgen/rsa1_key.o | grep " [T|B|D] "
# 最終的なビルドスイッチの設定は、以下の通り。 # 最終的なビルドスイッチの設定は、以下の通り。
# DEV_CYGWIN = FALSE # DEV_CYGWIN = FALSE
# USE_HSM = TRUE # USE_HSM = TRUE
# USE_SFMT = XX
DEV_CYGWIN = TRUE DEV_CYGWIN = TRUE
#USE_HSM = TRUE #USE_HSM = TRUE
USE_SFMT = TRUE
ifeq ($(USE_HSM),TRUE) ifeq ($(USE_HSM),TRUE)
@ -76,8 +75,6 @@ PACKAGE_DIR = ./package
# OPENSSL_DIR = ./openssl-1.0.0-beta2 # OPENSSL_DIR = ./openssl-1.0.0-beta2
OPENSSL_DIR = ./openssl-0.9.8k OPENSSL_DIR = ./openssl-0.9.8k
SFMT_DIR = ./SFMT-src-1.3.3
TARGET = gen_id TARGET = gen_id
KEYS_C = cr_eFuse_privKey_prod.c cr_eFuse_pubKey_prod.c \ KEYS_C = cr_eFuse_privKey_prod.c cr_eFuse_pubKey_prod.c \
@ -87,10 +84,6 @@ KEYS_C = cr_eFuse_privKey_prod.c cr_eFuse_pubKey_prod.c \
SRCS = main.c cr_generate_id.c cr_hsm_util.c cr_keyPair.c \ SRCS = main.c cr_generate_id.c cr_hsm_util.c cr_keyPair.c \
cr_deviceCert.c cr_enc_id.c cr_alloc.c cr_hsm_code.c cr_deviceCert.c cr_enc_id.c cr_alloc.c cr_hsm_code.c
ifeq ($(USE_SFMT),TRUE)
SRCS += $(SFMT_DIR)/SFMT.c
endif
OBJS = $(notdir $(SRCS:.c=.o)) OBJS = $(notdir $(SRCS:.c=.o))
CFLAGS = -Wall -DMEXP=216091 -msse2 -DHAVE_SSE2 CFLAGS = -Wall -DMEXP=216091 -msse2 -DHAVE_SSE2
@ -114,11 +107,6 @@ ifeq ($(USE_DUMMY_KEY),TRUE)
CFLAGS += -DUSE_DUMMY_KEY CFLAGS += -DUSE_DUMMY_KEY
endif endif
ifeq ($(USE_SFMT),TRUE)
CFLAGS += -DUSE_SFMT
CPPFLAGS+= -I$(SFMT_DIR)
endif
ifeq ($(USE_HSM),TRUE) ifeq ($(USE_HSM),TRUE)
CFLAGS += -DUSE_HSM CFLAGS += -DUSE_HSM
CPPFLAGS+= $(NFAST_CPPFLAGS) CPPFLAGS+= $(NFAST_CPPFLAGS)
@ -146,9 +134,6 @@ $(TARGET): $(OBJS)
$(OBJS): $(HEADS) Makefile $(OBJS): $(HEADS) Makefile
%.o:$(SFMT_DIR)/%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
%.o:%.c %.o:%.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

View File

@ -274,7 +274,6 @@ int cr_generate_id( u32 serial[CR_NUM_OF_SERIAL], u8 id_buf[CR_ID_BUF_SIZE], u8
printf("\n"); printf("\n");
} }
#endif /* DEBUG_PRINT */ #endif /* DEBUG_PRINT */
//-------------------------------------------------------------- //--------------------------------------------------------------
// タイムスタンプセット // タイムスタンプセット
//-------------------------------------------------------------- //--------------------------------------------------------------
@ -301,7 +300,7 @@ int cr_generate_id( u32 serial[CR_NUM_OF_SERIAL], u8 id_buf[CR_ID_BUF_SIZE], u8
//-------------------------------------------------------------- //--------------------------------------------------------------
// 楕円曲線鍵ペアを生成 // 楕円曲線鍵ペアを生成
//-------------------------------------------------------------- //--------------------------------------------------------------
ret_code = GenarateECCKeyPair( my_eckey, cr_id_buf->devicePrivKey ); ret_code = GenarateECCKeyPair( &my_eckey, cr_id_buf->devicePrivKey );
if ( ret_code != CR_GENID_SUCCESS ) { if ( ret_code != CR_GENID_SUCCESS ) {
goto end; goto end;
} }

View File

@ -183,7 +183,7 @@ typedef struct {
extern int GetTimestamp( u8 *pYear, u8 *pMonth, u8 *pMday, u8 *pHour, u8 *pMin, u8 *pSec, time_t *pTime); extern int GetTimestamp( u8 *pYear, u8 *pMonth, u8 *pMday, u8 *pHour, u8 *pMin, u8 *pSec, time_t *pTime);
extern int GenerateRandom( u8 *pDst, int length ); extern int GenerateRandom( u8 *pDst, int length );
extern int GenarateECCKeyPair( EC_KEY *pECkey, u8 *pECPrivkey ); extern int GenarateECCKeyPair( EC_KEY **ppECkey, u8 *pECPrivkey );
extern int GenerateCTRDeviceCert( EC_POINT *pubKey, u32 deviceId, u8 bondingOption ); extern int GenerateCTRDeviceCert( EC_POINT *pubKey, u32 deviceId, u8 bondingOption );
extern int EncryptID( unsigned char *dst_buf, unsigned char *org_buf, u8 bondingOption ); extern int EncryptID( unsigned char *dst_buf, unsigned char *org_buf, u8 bondingOption );
extern void DebugPrintArray( char *pStr, const u8 *pData, int length ); extern void DebugPrintArray( char *pStr, const u8 *pData, int length );

View File

@ -126,26 +126,26 @@ static int generate_EC_public_key( EC_KEY *eckey );
// ECCキーペアの生成 // ECCキーペアの生成
int GenarateECCKeyPair( EC_KEY *pECkey, u8 *pECPrivkey ) int GenarateECCKeyPair( EC_KEY **ppECkey, u8 *pECPrivkey )
{ {
int ret_code = 0; int ret_code = 0;
// 楕円を選択 ( NID_X9_62_prime256v1 -> 32bytesまで、 NID_sect571r1 -> 71bytesまで 署名にデータを含められる ) // 楕円を選択 ( NID_X9_62_prime256v1 -> 32bytesまで、 NID_sect571r1 -> 71bytesまで 署名にデータを含められる )
pECkey = EC_KEY_new_by_curve_name( NID_sect233r1 ); *ppECkey = EC_KEY_new_by_curve_name( NID_sect233r1 );
if( pECkey == NULL ) if( *ppECkey == NULL )
{ {
return CR_GENID_ERROR_EC_KEY_NEW_1; return CR_GENID_ERROR_EC_KEY_NEW_1;
} }
// 秘密鍵生成 // 秘密鍵生成
ret_code = generate_EC_private_key( pECkey, pECPrivkey ); ret_code = generate_EC_private_key( *ppECkey, pECPrivkey );
if( ret_code != 0 ) if( ret_code != 0 )
{ {
return CR_GENID_ERROR_EC_GENERATE_PRIVATE_KEY; return CR_GENID_ERROR_EC_GENERATE_PRIVATE_KEY;
} }
// 公開鍵生成 // 公開鍵生成
ret_code = generate_EC_public_key( pECkey ); ret_code = generate_EC_public_key( *ppECkey );
if ( ret_code == 0 ) if ( ret_code == 0 )
{ {
return CR_GENID_ERROR_EC_GENERATE_PUBLIC_KEY; return CR_GENID_ERROR_EC_GENERATE_PUBLIC_KEY;
@ -153,7 +153,7 @@ int GenarateECCKeyPair( EC_KEY *pECkey, u8 *pECPrivkey )
// ASN.1 形式指定フラグをセットする // ASN.1 形式指定フラグをセットする
// (これをセットしないと色々変なフィールドが入ってしまうため) // (これをセットしないと色々変なフィールドが入ってしまうため)
EC_KEY_set_asn1_flag( pECkey, 1 ); EC_KEY_set_asn1_flag( *ppECkey, 1 );
return 0; return 0;
} }

13
main.c
View File

@ -14,10 +14,6 @@
#include <unistd.h> #include <unistd.h>
#endif // Linux #endif // Linux
#ifdef USE_SFMT
#include "SFMT.h"
#endif /* USE_SFMT */
#include "cr_generate_id.h" #include "cr_generate_id.h"
#define T_BONDING_OPTION 0 // TORIAEZU bondingOption = 0 #define T_BONDING_OPTION 0 // TORIAEZU bondingOption = 0
@ -199,11 +195,6 @@ int main(int ac, char *argv[])
myseed = tloc; myseed = tloc;
srand(myseed); srand(myseed);
#ifdef USE_SFMT
init_gen_rand((u32)myseed);
/* いくらか乱数を読み捨てした方が良い? */
#endif
// ID生成前にカウンタ加算をするなら、初期値は 0 で OK // ID生成前にカウンタ加算をするなら、初期値は 0 で OK
counter0 = 0x00000000; counter0 = 0x00000000;
counter1 = 0x0000000000000000ll; counter1 = 0x0000000000000000ll;
@ -237,11 +228,7 @@ int main(int ac, char *argv[])
// counter2 は、"0 以外の 32bit 乱数値" を加算 // counter2 は、"0 以外の 32bit 乱数値" を加算
do { do {
#ifdef USE_SFMT
unit = (u64)gen_rand32();
#else
unit = (u64)rand() | ( (u64)rand() << 16 ); unit = (u64)rand() | ( (u64)rand() << 16 );
#endif
}while( unit == 0 ); }while( unit == 0 );
counter2 += unit; counter2 += unit;

View File

@ -2,8 +2,6 @@
# OPENSSL = openssl-1.0.0-beta2 # OPENSSL = openssl-1.0.0-beta2
OPENSSL = openssl-0.9.8k OPENSSL = openssl-0.9.8k
SFMT = SFMT-src-1.3.3
ifeq ($(DEV_CYGWIN),TRUE) ifeq ($(DEV_CYGWIN),TRUE)
OPENSSL_CONFIG_TARGET = mingw OPENSSL_CONFIG_TARGET = mingw
else else
@ -16,17 +14,12 @@ OUT_DIR = ../
.PHONY: all clobber .PHONY: all clobber
all: $(OUT_DIR)/$(SFMT) \ all: $(OUT_DIR)/$(OPENSSL)/libssl.a
$(OUT_DIR)/$(OPENSSL)/libssl.a
$(OUT_DIR)/$(OPENSSL)/libssl.a : $(OPENSSL).tar.gz $(OUT_DIR)/$(OPENSSL)/libssl.a : $(OPENSSL).tar.gz
tar xzvf $< -C $(OUT_DIR) tar xzvf $< -C $(OUT_DIR)
cd $(OUT_DIR)/$(OPENSSL);./Configure $(OPENSSL_CONFIG_TARGET);make build_libs; cd $(OUT_DIR)/$(OPENSSL);./Configure $(OPENSSL_CONFIG_TARGET);make build_libs;
$(OUT_DIR)/$(SFMT) : $(SFMT).zip
unzip -o $< -d $(OUT_DIR)
clobber: clobber:
$(RM) -r $(OUT_DIR)/$(SFMT)
$(RM) -r $(OUT_DIR)/$(OPENSSL) $(RM) -r $(OUT_DIR)/$(OPENSSL)

Binary file not shown.