<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri, sans-serif" size="2">
<div style="text-align: justify; ">Hi All,</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">I&#8217;m trying to compose an RPM using a Perl script. I always got the following error when trying to install the rpm created by my script:</div>
<div style="text-align: justify; ">header SHA1 digest: BAD</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">Following is the part of my script:</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">sub createsigheader($$$$)</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; {</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # all hardcoded (use _append later, when proof-of-concept ready)</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my @hdr;</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #push @hdr, pack(&quot;CCCCNNN&quot;, 0x8e, 0xad, 0xe8, 0x01, 0, 2, 20);</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $sha1 = $_[2].&quot;\000\000\000\000&quot;;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $sha1_length = length($sha1);</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;CCCCNNN&quot;, 0x8e, 0xad, 0xe8, 0x01, 0, 5, 0x54);</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;NNNN&quot;, 62, 7, 0x44, 16); # HDRSIG</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;NNNN&quot;, 269, 6, 0x00, 1); # SHA1</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;NNNN&quot;, 1000, 4, 0x2c, 1); # SIZE</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;NNNN&quot;, 1004, 7, 0x30, 16); # MD5</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;NNNN&quot;, 1007, 4, 0x40, 1); # payload size</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #push @hdr, pack(&quot;N&quot;, $_[0]); # add SIZE;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, $sha1; # add sha1 digest</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;N&quot;, $_[0] - 32); # add SIZE; # XXX -32 !!!</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, $_[1]; # add digest</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack (&quot;N&quot;, $_[3]); # add payload size</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; push @hdr, pack(&quot;CCCCCCCCCCCCCCCC&quot;, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00,</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x00, 0x07, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x10);</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return join('', @hdr) . &quot;\0&quot; x 4;</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">}</div>
<div style="text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-align: justify; ">my $dhdr = createdataheader $npkg, $cpiofile;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; system 'gzip', '-n', $cpiofile;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; my $ctx = Digest::MD5-&gt;new();</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; $ctx-&gt;add($dhdr);</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; #system &quot;md5sum $cpiofile.gz &gt;/dev/tty&quot;;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; open J, &quot;$cpiofile.gz&quot; or die $!;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; $ctx-&gt;addfile(*J);</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; close J;</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; use Digest::SHA1;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; my $sha1 = Digest::SHA1-&gt;new;</div>
<div style="text-align: justify; ">&nbsp;&nbsp;&nbsp; $sha1-&gt;add($dhdr);</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-align: justify; ">&nbsp;</div>
<div style="text-indent: 21pt; text-align: justify; ">my $shdr = createsigheader length($dhdr) &#43; -s &quot;$cpiofile.gz&quot;, $ctx-&gt;digest, $sha1-&gt;hexdigest, -s &quot;$cpiofile.gz&quot;;</div>
<div style="text-indent: 21pt; text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
<div style="text-indent: 21pt; text-align: justify; ">Any idea?</div>
<div style="text-indent: 21pt; text-align: justify; "><font face="Times New Roman, serif">&nbsp;</font></div>
</font>
</body>
</html>