2013-06-19 10 views
10

La classe Class<?> ha un metodo public Object[] getSigners() il cui JavaDoc non è così utile per spiegare cosa fa il metodo; chiamandolo su un paio di classi restituito nulla per me.Cosa sono i firmatari di una classe in Java?

Google ha restituito solo informazioni sulle eccezioni di sicurezza, che non hanno menzionato i firmatari di una classe; Ho visto lì su queste eccezioni che si verificano quando le stesse classi vengono caricate da più giare.

Che cosa rappresenta esattamente il firmatario di una classe Java? È un identificatore univoco fornito dalla JVM o da uno strumento quando viene firmato un Jar?

C'è tag per firmatario su StackOverflow ma è vuota ...

+2

http://docs.oracle.com/javase/tutorial/security/toolsign/ – SLaks

+3

Questo collegamento non spiega cosa il metodo 'getSigners()' fa – BlackHatSamurai

+0

Forse prova a firmare un codice con quello e vedi cosa restituisce ? –

risposta

5

Quando si firma un file .jar in Java, il Toolsigner passa attraverso di esso e in modo ricorsivo firmare ogni file nella .jar. Tuttavia, questo non è limitato a un solo firmatario in quanto è possibile firmare un file con molti certificati diversi. Quando si verifica che un file sia firmato dal firmatario corretto, è possibile chiamare il metodo getSigners() per restituire un elenco di tutti i firmatari che hanno firmato tale classe.

+0

E l'unico modo per firmare una classe è firmando il file .jar usando il tooligner? – m3th0dman

+0

L'uso di un tooligner è l'unico modo pratico che io conosca. È facile da usare e non c'è assolutamente alcuna ragione "pratica" per non usarne uno. –

+0

E cos'è esattamente un firmatario? È un qualche tipo di token di sicurezza o chiave? – m3th0dman