aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2012-10-19 20:19:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-19 20:30:40 -0400
commitcaabe240574aec05b2f5667414ce80f9075c2ba1 (patch)
treed92bf96b009bd0b0caec44c21348812b06805909 /scripts
parentb6bb324dbddd704b4b9a85971e1f7ae79abb2e1d (diff)
MODSIGN: Move the magic string to the end of a module and eliminate the search
Emit the magic string that indicates a module has a signature after the signature data instead of before it. This allows module_sig_check() to be made simpler and faster by the elimination of the search for the magic string. Instead we just need to do a single memcmp(). This works because at the end of the signature data there is the fixed-length signature information block. This block then falls immediately prior to the magic number. From the contents of the information block, it is trivial to calculate the size of the signature data and thus the size of the actual module data. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/sign-file6
1 files changed, 3 insertions, 3 deletions
diff --git a/scripts/sign-file b/scripts/sign-file
index d37d1309531e..87ca59d36e7e 100755
--- a/scripts/sign-file
+++ b/scripts/sign-file
@@ -403,11 +403,11 @@ my $info = pack("CCCCCxxxN",
403 403
404if ($verbose) { 404if ($verbose) {
405 print "Size of unsigned module: ", length($unsigned_module), "\n"; 405 print "Size of unsigned module: ", length($unsigned_module), "\n";
406 print "Size of magic number : ", length($magic_number), "\n";
407 print "Size of signer's name : ", length($signers_name), "\n"; 406 print "Size of signer's name : ", length($signers_name), "\n";
408 print "Size of key identifier : ", length($key_identifier), "\n"; 407 print "Size of key identifier : ", length($key_identifier), "\n";
409 print "Size of signature : ", length($signature), "\n"; 408 print "Size of signature : ", length($signature), "\n";
410 print "Size of informaton : ", length($info), "\n"; 409 print "Size of informaton : ", length($info), "\n";
410 print "Size of magic number : ", length($magic_number), "\n";
411 print "Signer's name : '", $signers_name, "'\n"; 411 print "Signer's name : '", $signers_name, "'\n";
412 print "Digest : $dgst\n"; 412 print "Digest : $dgst\n";
413} 413}
@@ -416,11 +416,11 @@ open(FD, ">$dest") || die $dest;
416binmode FD; 416binmode FD;
417print FD 417print FD
418 $unsigned_module, 418 $unsigned_module,
419 $magic_number,
420 $signers_name, 419 $signers_name,
421 $key_identifier, 420 $key_identifier,
422 $signature, 421 $signature,
423 $info 422 $info,
423 $magic_number
424 ; 424 ;
425close FD || die $dest; 425close FD || die $dest;
426 426