2013-06-11 4 views
1

Mac OS X에서 .dylib 파일 인 동적 라이브러리를 만들었으므로 잘 컴파일됩니다. .dylib를 사용하여 응용 프로그램을 실행하려면 fips_premain.c 파일의 일부 기능을 'main'앞에 실행하여 지문이 .dylib에 제대로 삽입되었는지 확인하십시오. 정적 라이브러리에서 incore_macho라는 실행 파일을 실행하면 지문이 체크 아웃됩니다.Mac OS X에서 OpenSSL 지문 임베디드

/User/.../Debug/libcompute-osx.dylib is not a mach-o executable file (filetype 6 should be 2) 

어떤 생각을 : 나는 다음과 같은 출력으로 dylib에 incore_macho 실행 엑스 코드를 얻을 때 동적 라이브러리의 경우에는 내가 실패를 얻을?

답변

0

incore-macho는 유형 2 파일 (즉, 실행 파일의 MH_EXECUTE)에서만 실행됩니다. 유형 6은 MH_DYLIB (확인중인 동적 라이브러리)입니다. 그것은 오류 메시지가 말하는 것입니다. 그것에 따르면, 그것은 단지 dylibs에 적합하지 않습니다.

0

정적 라이브러리의 경우 정적 라이브러리에서 incore_macho라는 실행 파일을 실행하면 지문이 체크 아웃됩니다.

정확하지 않습니다. 코드 및 데이터는 실행 파일의 최종 링크에서 재배치되기 때문에 FIPS 지문을 정적 라이브러리에 포함 할 수 없습니다. 은 최종 연결이 수행 되었기 때문에 실행 프로그램이나 공유 개체에 지문을 포함시킬 수 있습니다. 나는 다음과 같은 출력

에는 OpenSSL 재단은 이것에 대한 수정 프로그램이 함께 dylib에 incore_macho 실행 엑스 코드를 얻을 때


는 동적 라이브러리의 경우에는 내가 실패를 얻을. dylib를 섭취하는 데 필요한 변경 사항은 다음과 같습니다. MH_DYLIB을 허용 또한, 어느 곳이 MH_EXECUTE에 대한 테스트를 찾을 ...

else if(!(header->filetype == MH_EXECUTE || header->filetype == MH_DYLIB)) 
{ 
    fprintf(stderr, "%s is not a mach-o executable file " 
     "(filetype %d should be MH_EXECUTE or MH_DYLIB)\n", 
     inFile->filename, header->filetype); 
} 

그리고 바로 그거야 : 라인 690 주위

else if(!(header->filetype == MH_EXECUTE || header->filetype == MH_DYLIB)) 
{ 
    fprintf(stderr, "%s is not a mach-o executable file " 
     "(filetype %d, should be MH_EXECUTE or MH_DYLIB)\n", 
     inFile->filename, header->filetype); 
    return -1; 
} 

을 :

530 라인 주위에 다음과 같이 incore_macho.c을 수정합니다.

또는 업데이트 된 incore_macho.cGithub에서 다운로드하십시오. 업데이트 된 내용은 incore_macho.c에도 ARMv7에 대한 지원이 포함되어 있습니다.