ctr_eFuse/tools/bin2c.plx
(no author) 1685d4ae68 ・ビルドスイッチの整理。
HSM使用時は、ダミー鍵をリンクしないよう変更。
 HSM未使用時は、ダミー鍵を使用するよう変更。
 ENCRYPT_AESは、Makefileではなく、ヘッダで定義するよう変更。

・ダミー鍵処理を整備。
 AES鍵も外部データをリンクするよう変更。
 RSA鍵、AES鍵を共に開発鍵と製品鍵の両方を用意し、ボンディングオプションで切り替えるよう変更。
 ダミー鍵使用時は、gen_id.exeを停止せず、最初に警告メッセージを表示するよう変更。


git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_eFuse@32 ff987cc8-cf2f-4642-8568-d52cce064691
2009-12-22 08:35:27 +00:00

95 lines
2.0 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/perl -w
use strict;
use File::Basename;
# バイナリファイルをCソースに変換
my $KEY_VER = 1;
my $srcfname = $ARGV[0];
my $dstfname_c;
my $dstfname_h;
my $arrayname;
my $size;
if( !$ARGV[0] || !$ARGV[1] ) {
die "parameter error.\n";
}
$_ = "cr_" . basename($srcfname, "");
s/(\..*)/_$ARGV[1]\.c/;
$dstfname_c = $_;
#s/(\..*)/\.h/;
#$dstfname_h = $_;
s/(\..*)//;
$arrayname = $_;
$size = -s $srcfname;
open SRC, "< $srcfname"
or die "Cannot open file $srcfname : $!";
open DST, "> $dstfname_c"
or die "Cannot open file temp : $!";
#open DST2, "> $dstfname_h"
# or die "Cannot open file temp : $!";
binmode( SRC );
# $sizeが16byte超(AES鍵でないなら、配列サイズを + magic_code(8) + keyLen(2) + padding(6) し、16bytesでROUNDUP
my $array_size = ( $size + 16 + 15) & 0xfffffff0;
# .c ファイルに変換して出力
printf DST "#include <stdio.h>\n\n";
printf DST "\/\/下記配列は、KEYデータの前に magic_code[8] + keyLen[2] + keyVer[1] + padding[5] のデータが挿入されています。\n\n";
printf DST "const unsigned char %s[ 0x%x ] = {\n\t", $arrayname, $array_size;
# magic code
my $magic_priv = "REDCODER";
my $magic_pub = "REDCODEU";
my @magic_list;
if( $srcfname =~ m/priv/ ) {
@magic_list = unpack( "H2H2H2H2H2H2H2H2", $magic_priv );
}else {
@magic_list = unpack( "H2H2H2H2H2H2H2H2", $magic_pub );
}
foreach my $elem ( @magic_list ) {
printf DST "0x%s, ", $elem;
}
# サイズ
printf DST "0x%02x, ", $size % 256;
printf DST "0x%02x, ", $size / 256;
# KEYバージョン
printf DST "0x%02x, ", $KEY_VER;
# パディング
my $i;
for ( $i = 0; $i < 5; $i++) {
printf DST "0x%02x, ", rand(255);
}
# KEY実体
my $buff;
my $count = 0;
while( sysread( SRC, $buff, 1 ) ) {
my $src = unpack( "C", $buff );
print DST "\n\t" if( ( $count & 0x0f ) == 0 );
printf DST "0x%02x, ", $src;
$count++;
}
print DST "\n};\n";
close SRC;
close DST;
# .h ファイルも出力
#printf DST2 "extern const unsigned char %s[ 0x%x ];\n", $arrayname, $array_size;
#close DST2;