Domain/Android
[Android] signing verification
yhcting
2015. 2. 11. 21:56
/libcore/luni/src/main/java/java/util/jar/JarVerifier.java
여기 source를 확인해 보면,
+ '.RSA', '.DSA', '.EC' 로 끝나는 file을 찾고, 같은 이름의 '.SF' 파일을 찾는다.(Android의 경우는, 'CERT.RSA' 와 'CERT.SF' 파일)
: '.RSA', '.DSA', '.EC' : Certification File.
: '.SF' : Signature File
: Signature file을 certification file을 통해서 먼저 verification한다.
+ .SF 파일의 각 file entry에 대해서 '-Digest' 값을 읽어 들인다.
<< PackageParser >>
'Signing Verifier'에서 읽어들인 "file entry:<HASH>" 값 mapping table을 이용해서, zip file안에 있는 file들에 대해 hash를 검사한다.
: System APK에 대해서는 Manifest의 hash만 검사 (trusted app.) 그렇지 않은 경우 모든 file - 'META-INF/' directory제외 - 에 대해서 검사.