2012-05-11 32 views
8

Tôi đang viết một ứng dụng thông tin lắp ráp được sử dụng trong quy trình xây dựng phần mềm của chúng tôi và tôi đang cố gắng đọc thông tin chữ ký số từ một hội đồng .Net đã ký.Làm cách nào để đọc thông tin chữ ký số từ một hội đồng .Net đã ký?

Tôi muốn thực hiện trong mã C# của mình những gì Windows Explorer có thể thực hiện bằng cách bấm chuột phải vào một hội đồng đã ký và chọn tab "Chữ ký số" và sau đó nhấp vào nút Chi tiết. ví dụ.

Windows 7 Explorer can do by right-clicking file properties

Digital signature details

Có ai đã một ý tưởng làm thế nào để làm điều này lập trình trong C#? Tôi hiện đang sử dụng số Mono Cecil library để nhận phần còn lại của thông tin từ hội đồng. Sự giúp đỡ của bạn sẽ được đánh giá cao nhất.

+1

Những gì bạn hiển thị là chữ ký 'Authenticode', áp dụng cho tất cả các tệp PE. Cũng tồn tại 'strongnaming', định dạng chữ ký .NET. Strongnaming được thực hiện bằng cách sử dụng một cặp khóa, không phải là một chứng chỉ, do đó bạn không thể trích xuất bất kỳ thông tin hữu ích nào từ assembly được đặt tên mạnh. Tìm kiếm 'Authenticode' trên StackOverflow sẽ cung cấp cho bạn nhiều thông tin hữu ích. –

+1

[Có thể] (http://stackoverflow.com/questions/301024/validate-authenticode-signature-on-exe-c-without-capicom) [related] (http://stackoverflow.com/questions/3281057/get -timestamp-from-authenticode-signed-files-in-net) các câu hỏi. – shambulator

+1

bản sao có thể có của [Làm cách nào để đọc khóa công khai từ chữ ký C# exe] (http://stackoverflow.com/questions/3722610/how-do-i-read-the-public-key-from-a-signed -c-sharp-exe) –

Trả lời

5

Dự án Mono cung cấp mã nguồn cho cả signcodechktrust mà bạn có thể sử dụng lại bên trong ứng dụng của riêng bạn (nguồn mở, MIT X11 được cấp phép).

Cả hai sử dụng Mono.Security.dll assembly (hoạt động trong Windows, không chỉ Linux và OSX) và bao gồm một số complete Authenticode support.