Hi, here's my 5 minute try of converting elfsign to use sha1. It builds fine, but I must admit that I have no clue how to test it. Maybe it helps nonetheless...
Cheers, Stefan.
--- elfsign-0.2.2.orig/lib/verify.c +++ elfsign-0.2.2/lib/verify.c @@ -10,7 +10,7 @@ #include "openssl/objects.h" #include "openssl/rsa.h" -#include "openssl/md5.h" +#include "openssl/sha.h" #include "openssl/x509.h" #include "openssl/pem.h" @@ -243,9 +243,9 @@ Elf32_Off sectionTableOffset; Elf32_Half numSections; Elf32_Ehdr *elfHeader; - MD5_CTX md5; + SHA_CTX sha1; - MD5_Init(&md5); + SHA1_Init(&sha1); // Include the ELF header, but with the number of sections set minus one, // under the assumption that any binary having its checksum @@ -262,7 +262,7 @@ melf_elfSetSectionHeaderCount(melf, numSections - 1); melf_elfSetSectionHeaderOffset(melf, 0); - MD5_Update(&md5, elfHeader, sizeof(Elf32_Ehdr)); + SHA1_Update(&sha1, elfHeader, sizeof(Elf32_Ehdr)); melf_elfSetSectionHeaderCount(melf, numSections); melf_elfSetSectionHeaderOffset(melf, sectionTableOffset); @@ -301,10 +301,10 @@ // Include the section's body content in the checksum if (currSection->content) - MD5_Update(&md5, currSection->content, currSection->contentLength); + SHA1_Update(&sha1, currSection->content, currSection->contentLength); // Include the section's header in the checksum - MD5_Update(&md5, + SHA1_Update(&sha1, &currSection->spec.section, melf_elfGetSectionEntrySize(melf)); @@ -317,13 +317,13 @@ currProgram; currProgram = melf_sectionEnumNext(melf, currProgram)) { - MD5_Update(&md5, + SHA1_Update(&sha1, &currProgram->spec.program, melf_elfGetProgramEntrySize(melf)); } // Finalize the digest - MD5_Final(digest, &md5); + SHA1_Final(digest, &sha1); if (sigHeader) *sigHeader = lSigHeader;
signature.asc
Description: This is a digitally signed message part.