Bagikan melalui


IOpcDigitalSignatureManager::Metode tanda tangan (msopc.h)

Menandatangani paket dengan membuat tanda tangan dengan menggunakan sertifikat yang ditentukan dan penunjuk antarmuka IOpcSigningOptions . Tanda tangan yang dihasilkan diwakili oleh penunjuk antarmuka IOpcDigitalSignature .

Sintaks

HRESULT Sign(
  [in]          const CERT_CONTEXT   *certificate,
  [in]          IOpcSigningOptions   *signingOptions,
  [out, retval] IOpcDigitalSignature **digitalSignature
);

Parameter

[in] certificate

Penunjuk ke struktur CERT_CONTEXT yang berisi sertifikat.

[in] signingOptions

Penunjuk antarmuka IOpcSigningOptions yang digunakan untuk menghasilkan tanda tangan.

[out, retval] digitalSignature

Penunjuk antarmuka IOpcDigitalSignature baru yang mewakili tanda tangan.

Nilai kembali

Metode mengembalikan HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.

Mengembalikan kode/nilai Deskripsi
S_OK
Metode berhasil.
E_POINTER
Setidaknya salah satu parameter sertifikat, signingOptions, dan digitalSignature adalah NULL.
OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET
0x80510047
Metode hash default belum ditetapkan; untuk mengaturnya, panggil IOpcSigningOptions::SetDefaultDigestMethod.
OPC_E_DS_DIGEST_VALUE_ERROR
0x8051001A
Tidak bisa mendapatkan nilai hash komponen paket atau elemen dalam markup tanda tangan yang dirujuk untuk penandatanganan.
OPC_E_DS_INVALID_OPC_SIGNATURE_TIME_FORMAT
0x80510024
Format waktu tanda tangan bukan nilai enumerasi OPC_SIGNATURE_TIME_FORMAT yang valid.
OPC_E_DS_INVALID_RELATIONSHIPS_SIGNING_OPTION
0x80510023
Opsi penandatanganan hubungan yang ditunjukkan bukan nilai enumerasi OPC_RELATIONSHIPS_SIGNING_OPTION yang valid.
OPC_E_DS_SIGNATURE_CORRUPT
0x80510019
Tanda tangan dalam paket tidak terbentuk dengan benar. Tidak bisa mendapatkan nilai tanda tangan.
OPC_E_DS_SIGNATURE_METHOD_NOT_SET
0x80510046
Metode tanda tangan belum disetel. Panggil IOpcSigningOptions::SetSignatureMethod untuk mengatur metode tanda tangan.
OPC_E_NO_SUCH_PART
0x80510018
Bagian yang ditentukan tidak ada.
Kesalahan kriptografi
Kode kesalahan HRESULT dari API Kriptografi .
Kesalahan Windows Web Services
Kode kesalahan HRESULT dari API Windows Web Services .

Keterangan

Metode ini menggunakan objek Pengemasan untuk membuat perubahan pada paket. Perubahan yang dihasilkan tidak disimpan sampai paket itu sendiri disimpan.

Sebelum metode ini dipanggil untuk menghasilkan tanda tangan, panggil metode IOpcSigningOptions::SetDefaultDigestMethod dan IOpcSigningOptions::SetSignatureMethod .

Untuk membuat penunjuk antarmuka IOpcSigningOptions , yang diperlukan oleh metode ini, panggil metode CreateSigningOptions .

Penting Jika paket dimodifikasi saat metode ini sedang dijalankan, Tanda tangan mungkin gagal atau menghasilkan tanda tangan yang tidak konsisten. Untuk menghindari kerusakan paket, gunakan API untuk menyimpan paket sebelum memanggil Sign. Untuk informasi tentang cara menyimpan paket, lihat Menyimpan Paket.
 
Metode ini dapat membuat bagian dan hubungan berikut:
  • Bagian Asal Tanda Tangan Digital
  • Hubungan paket dari jenis hubungan asal tanda tangan digital
  • Satu bagian tanda tangan yang berisi markup tanda tangan
  • Satu atau beberapa bagian yang berisi sertifikat
  • Satu hubungan yang menargetkan bagian tanda tangan dan yang memiliki bagian Asal Tanda Tangan Digital sebagai sumbernya
  • Satu atau beberapa hubungan yang menargetkan bagian tanda tangan yang berisi sertifikat dan yang memiliki bagian tanda tangan lain sebagai sumbernya

Jika Tanda gagal, salah satu bagian dan hubungan di atas dapat diwakili, dalam paket, oleh objek Kemasan. Jika metode mengembalikan kode kesalahan OPC_E_DS_SIGNATURE_METHOD_NOT_SET atau OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET , paket belum diubah.

Jika Tanda berhasil, nilai hash dihitung untuk entitas yang ditandatangani, dan tanda tangan yang dihasilkan diserialisasikan sebagai markup tanda tangan. Kemungkinan entitas yang ditandatangani termasuk elemen Tanda Tangan , referensi, bagian, hubungan, dan elemen Objek khusus paket dan khusus aplikasi.

Kesalahan yang dimasukkan ke dalam tanda tangan paket saat pemanggil menggunakan antarmuka IOpcSigningOptions untuk mengatur informasi tanda tangan mungkin tidak diekspos hingga Tanda tangan dipanggil.

Keamanan Thread

Objek pengemasan tidak aman untuk rangkaian.

Untuk informasi selengkapnya, lihat Memulai API Kemasan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header msopc.h

Lihat juga

Antarmuka Pengemasan Inti

Sertifikat Digital

Gambaran Umum Tanda Tangan Digital

Memulai API Kemasan

IOpcDigitalSignatureManager

Gambaran Umum

Panduan Pemrograman API Pengemasan

Referensi API Pengemasan

Sampel API Pengemasan

Kemasan Antarmuka Tanda Tangan Digital

Antarmuka Pengemasan

Referensi

Menyimpan Paket