Ho una libreria di hash MD5 di chiavi pubbliche utilizzate per firmare vari jar e una mappatura ai rispettivi keystore che usiamo per firmare diversi APK. Quello che mi piacerebbe essere in grado di fare è identificare quale keystore è stato usato per firmare un APK, ma senza usare tentativi ed errori. (Inoltre, purtroppo, molte delle nostre chiavi condividono DN simili o identici.)Estratto certificato X.509 non elaborato da un APK o JAR firmato
La mia soluzione, perché so che il META-INF/FOO.RSA (o FOO.DSA) contiene il certificato, era estrarre il certificato da il file RSA dell'APK e calcolare direttamente l'hash MD5. (So che il certificato è lì perché è accessibile a un'applicazione Android in esecuzione, e la documentazione di jarsigner mi dice che è lì.)
Ma non riesco a trovare nessuno strumento che mi dà i byte effettivi del certificato. Posso ottenere il DN e i metadati del certificato quando uso jarsigner -verbose -verify -certs my.apk
, ma questo non mi dà i byte.
Grazie mille! Ho appena scritto una sceneggiatura. Per coloro che sono curiosi, il file .RSA sembra avere il seguente schema: * 54 byte di informazioni sconosciute * a 2 byte breve (big-endian) con la lunghezza del certificato imminente * i n byte di il certificato * sconosciuto –