2013-06-19 14 views
10

Lớp Class<?> có phương thức public Object[] getSigners() có JavaDoc không hữu ích trong việc giải thích phương thức thực hiện; gọi nó trên một vài lớp học trả về null cho tôi.Ký hiệu của một lớp trong Java là gì?

Google chỉ trả lại thông tin về ngoại lệ bảo mật, không đề cập đến những người ký tên trong lớp học; Tôi đã thấy có những ngoại lệ này xảy ra khi cùng một lớp được nạp từ nhiều lọ.

Chính xác người ký tên của lớp Java đại diện cho điều gì? Nó là một số định danh duy nhất được cung cấp bởi JVM hoặc bởi một công cụ khi một Jar được ký?

Có thẻ cho người ký trên StackOverflow nhưng nó trống rỗng ...

+2

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

+3

Liên kết đó không giải thích phương thức 'getSigners()' nào – BlackHatSamurai

+0

Có thể thử ký một số mã với điều đó và xem nó trả về cái gì ? –

Trả lời

5

Khi bạn đăng ký một file .jar trong Java, Toolsigner đi qua nó và đệ quy ký vào từng tập tin trong .jar. Tuy nhiên, điều này không chỉ giới hạn ở một người ký khi bạn có thể ký một tệp với nhiều chứng chỉ khác nhau. Khi bạn xác minh rằng một tập tin được ký bởi đúng người ký, bạn có thể gọi phương thức getSigners() để trả về một danh sách tất cả những người ký đã ký tên vào lớp đó.

+0

Và cách duy nhất để ký một lớp là bằng cách ký tên vào tập tin .jar bằng cách sử dụng toolsigner? – m3th0dman

+0

Sử dụng bộ công cụ là cách thực tế duy nhất mà tôi biết. Nó rất dễ sử dụng và hoàn toàn không có lý do 'thực tế' nào không sử dụng. –

+0

Và chính xác người ký là gì? Đó là một số loại mã thông báo hoặc khóa bảo mật? – m3th0dman