

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 用戶端 AWS CloudHSM SDK 5 支援的 API 操作金鑰儲存提供者 (KSP)
<a name="ksp-library-apis"></a>

KSP 中的參數由 Microsoft KSP 定義。如需詳細資訊，請參閱 [Microsoft 文件](https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/)。

金鑰儲存提供者 (KSP) 支援 AWS CloudHSM 用戶端 SDK 5 的下列 KSP API 操作。
+ [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)
+ [NCryptOpenKey](ksp-library-apis-open-key.md)
+ [NCryptCreatePersistedKey](ksp-library-apis-create-persisted-key.md)
+ [NCryptGetProperty](ksp-library-apis-get-property.md)
+ [NCryptSetProperty](ksp-library-apis-set-property.md)
+ [NCryptFinalizeKey](ksp-library-apis-finalize-key.md)
+ [NCryptDeleteKey](ksp-library-apis-delete-key.md)
+ [NCryptFreeObject](ksp-library-apis-free-object.md)
+ [NCryptFreeBuffer](ksp-library-apis-free-buffer.md)
+ [NCryptIsAlgSupported](ksp-library-apis-is-alg-supported.md)
+ [NCryptEnumAlgorithms](ksp-library-apis-enum-algorithms.md)
+ [NCryptEnumKeys](ksp-library-apis-enum-keys.md)
+ [NCryptExportKey](ksp-library-apis-export-key.md)
+ [NCryptSignHash](ksp-library-apis-sign-hash.md)
+ [NCryptVerifySignature](ksp-library-apis-verify-signature.md)

# NCryptOpenStorageProvider 函數與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-open-provider"></a>

`NCryptOpenStorageProvider` 函數會載入並初始化金鑰儲存提供者 (KSP)。

## Parameters
<a name="ksp-library-apis-open-provider-parameters"></a>

 `phProvider` 【輸出】   
儲存提供者控點之`NCRYPT_PROV_HANDLE`變數的指標。

 `pszProviderName` 【in】   
識別金鑰儲存提供者的 null 終止 Unicode 字串指標。AWS CloudHSM Key Storage Provider (KSP) 支援下列值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-open-provider.html)
值為廣字元字串常值，如常值前的 L 所示。

`dwFlags` 【in】  
修改函數行為的旗標。此函數未定義任何旗標。

## 傳回值
<a name="ksp-library-apis-open-provider-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 

# NCryptOpenKey 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-open-key"></a>

`NCryptOpenKey` 函數會開啟金鑰儲存提供者 (KSP) 中存在的金鑰。

## Parameters
<a name="ksp-library-apis-open-key-parameters"></a>

 `hProvider` 【in】   
包含金鑰的 KSP 控制代碼。使用 [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)取得控點。

 `phKey` 【輸出】   
儲存金鑰控制代碼之`NCRYPT_KEY_HANDLE`變數的指標。

`pszKeyName` 【in】  
包含金鑰名稱的 null 終止 Unicode 字串指標。

`dwLegacyKeySpec` 【in、未使用】  
AWS CloudHSM 金鑰儲存提供者 (KSP) 不會使用此參數。

`dwFlags` 【in】  
修改函數行為的旗標。此函數未定義任何旗標。

## 傳回值
<a name="ksp-library-apis-open-key-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hProvider`無效。  | 
|  NTE\$1BAD\$1KEYSET  |  提供的金鑰名稱未傳回唯一結果。  | 

# NCryptCreatePersistedKey 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-create-persisted-key"></a>

`NCryptCreatePersistedKey` 函數會建立新的金鑰，並將其存放在金鑰儲存提供者 (KSP) 中。您可以使用 [`NCryptSetProperty`](ksp-library-apis-set-property.md)函數在建立後設定其屬性。您必須先呼叫 [`NCryptFinalizeKey`](ksp-library-apis-finalize-key.md)，才能使用 金鑰。

## Parameters
<a name="ksp-library-apis-create-persisted-key-parameters"></a>

 `hProvider` 【in】   
您將建立金鑰之金鑰儲存提供者的控制代碼。使用 [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)取得此控制代碼。

 `phKey` 【輸出】   
存放金鑰控制代碼的 `NCRYPT_KEY_HANDLE`變數地址。

 `pszAlgId` 【in】   
指向 null 終止的 Unicode 字串的指標，指定用於建立金鑰的密碼編譯演算法識別符。  
AWS CloudHSM 金鑰儲存提供者 (KSP) 支援下列演算法：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-create-persisted-key.html)

`pszKeyName` 【in，選用】  
指向包含金鑰名稱的 null 終止 Unicode 字串的指標。如果此參數為 NULL，則此函數會建立不會保留的暫時性金鑰。

`dwLegacyKeySpec` 【in、未使用】  
AWS CloudHSM 金鑰儲存提供者 (KSP) 不會使用此參數。

`dwFlags` 【in】  
用於修改函數行為的旗標。使用下列零或多個值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-create-persisted-key.html)

## 傳回值
<a name="ksp-library-apis-create-persisted-key-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  函數已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszAlgId` 參數包含不支援的值。  | 
|  NTE\$1EXISTS  |  具有指定名稱的金鑰已存在，且操作未使用 ` NCRYPT_OVERWRITE_KEY_FLAG`。  | 

# NCryptGetProperty 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-get-property"></a>

`NCryptGetProperty` 函數會擷取金鑰儲存物件的屬性值。

## Parameters
<a name="ksp-library-apis-create-get-property-parameters"></a>

 `hObject` 【in】   
 您要擷取其屬性的物件控點。您可以使用：  
+ 供應商控制代碼 (`NCRYPT_PROV_HANDLE`)
+ 金鑰控制代碼 (`NCRYPT_KEY_HANDLE`)

 `pszProperty ` 【in】   
指向 null 終止的 Unicode 字串的指標，其中包含要擷取的屬性名稱。  
使用 時`NCRYPT_PROV_HANDLE`， AWS CloudHSM 金鑰儲存提供者 (KSP) 支援下列 KSP 識別符：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)
使用 時`NCRYPT_KEY_HANDLE`， AWS CloudHSM 金鑰儲存提供者 (KSP) 支援下列 KSP 識別符：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)
值為廣字元字串常值，如常值前的 L 所示。

 `pbOutput` 【輸出】   
儲存屬性值的緩衝區地址。使用 指定緩衝區大小`cbOutput`。  
若要判斷所需的緩衝區大小，請將此參數設定為 NULL。函數會將所需的大小 （以位元組為單位） 存放在 指向的位置`pcbResult`。

 `cbOutput` 【in】   
 `pbOutput` 緩衝區的大小，以位元組為單位。

`pcbResult` 【輸出】  
指向 DWORD 變數的指標，可存放複製到緩衝區的`pbOutput`位元組數。  
如果 `pbOutput`是 NULL，這會儲存所需的大小 （以位元組為單位）。

`dwFlags` 【in】  
用於修改函數行為的旗標。您可以使用零或：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)
當 pszProperty 為 時`NCRYPT_SECURITY_DESCR_PROPERTY`，請使用下列其中一項或組合：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-get-property.html)

## 傳回值
<a name="ksp-library-apis-get-property-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszAlgId` 參數包含不支援的值。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hObject`無效。  | 
|  NTE\$1BUFFER\$1TOO\$1SMALL  |  `cbOutput` 參數太小，無法傳回值。  | 

# NCryptSetProperty 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-set-property"></a>

`NCryptSetProperty` 函數會設定金鑰儲存物件的屬性值。

## Parameters
<a name="ksp-library-apis-create-set-property-parameters"></a>

 `hObject` 【in】   
 您要設定其屬性的物件控點。您可以使用：  
+ 供應商控制代碼 (`NCRYPT_PROV_HANDLE`)
+ 金鑰控制代碼 (`NCRYPT_KEY_HANDLE`)

 `pszProperty ` 【in】   
指向 null 終止的 Unicode 字串的指標，其中包含要擷取的屬性名稱。  
使用 時`NCRYPT_PROV_HANDLE`， AWS CloudHSM 金鑰儲存提供者 (KSP) 支援下列 KSP 識別符：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-set-property.html)
使用 時`NCRYPT_KEY_HANDLE`， AWS CloudHSM 金鑰儲存提供者 (KSP) 支援下列 KSP 識別符：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-set-property.html)
值為廣字元字串常值，如常值前的 L 所示。

 `pbInput` 【in】   
 包含新屬性值的緩衝區地址。 `cbInput`包含緩衝區的大小。

 `cbInput` 【in】   
 `pbInput` 緩衝區的大小，以位元組為單位。

`dwFlags` 【in】  
修改函數行為的旗標。此函數未定義任何旗標。

## 傳回值
<a name="ksp-library-apis-set-property-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszProperty` 參數包含不支援的值。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hObject`無效。  | 
|  NTE\$1BAD\$1DATA  |  指向 `pbInput`和 的資料`cbInput`無效。  | 

# NCryptFinalizeKey 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-finalize-key"></a>

`NCryptFinalizeKey` 函數會完成 KSP 金鑰。您必須呼叫此函數，才能使用 金鑰。

## Parameters
<a name="ksp-library-apis-finalize-key-parameters"></a>

 `hKey` 【in】   
 要完成的金鑰控制代碼。呼叫 [NCryptCreatePersistedKey](ksp-library-apis-create-persisted-key.md) 函數來取得此控制代碼。

`dwFlags` 【in】  
用於修改函數行為的旗標。您可以使用零或這些值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-finalize-key.html)

## 傳回值
<a name="ksp-library-apis-finalize-key-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hKey`無效。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `dwFlags` 參數包含不支援的值。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 

# NCryptDeleteKey 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-delete-key"></a>

`NCryptDeleteKey` 函數會從金鑰儲存提供者 (KSP) 刪除 KSP 金鑰。

## Parameters
<a name="ksp-library-apis-delete-key-parameters"></a>

 `hKey` 【in】   
 要刪除之金鑰的控制代碼。

`dwFlags` 【in】  
用於修改函數行為的旗標。您可以使用下列零或多個值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-delete-key.html)

## 傳回值
<a name="ksp-library-apis-delete-key-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  函數已成功。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hKey`無效。  | 
|  NTE\$1INTERNAL\$1ERROR  |  刪除金鑰時發生內部錯誤。  | 

# NCryptFreeObject 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-free-object"></a>

`NCryptFreeObject` 函數會從金鑰儲存提供者 (KSP) 釋出提供者或金鑰控制代碼。

## Parameters
<a name="ksp-library-apis-free-object-parameters"></a>

 `hObject` 【in】   
 要釋放之物件的控制代碼。您可以使用：  
+ 供應商控制代碼 (`NCRYPT_PROV_HANDLE`)
+ 金鑰控制代碼 (`NCRYPT_KEY_HANDLE`)

## 傳回值
<a name="ksp-library-apis-free-object-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hObject`無效。  | 

# NCryptFreeBuffer 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-free-buffer"></a>

`NCryptFreeBuffer` 函數會釋出金鑰儲存提供者 (KSP) 配置的記憶體區塊。

## Parameters
<a name="ksp-library-apis-free-buffer-parameters"></a>

 `pvInput` 【in】   
 要釋放的記憶體地址。

## 傳回值
<a name="ksp-library-apis-free-buffer-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 

# 使用金鑰儲存提供者 (KSP) NCryptIsAlgSupported
<a name="ksp-library-apis-is-alg-supported"></a>

NCryptIsAlgSupported 函數會判斷金鑰儲存提供者 (KSP) 是否支援特定的密碼編譯演算法。

## Parameters
<a name="ksp-library-apis-is-alg-supported-parameters"></a>

 `hProvider` 【in】   
 金鑰儲存提供者的控制代碼。使用 [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)取得控點。

 `pszAlgId` 【in】   
 指向 null 終止的 Unicode 字串的指標，其中包含用於建立金鑰的密碼編譯演算法識別符。AWS CloudHSM Key Storage Provider (KSP) 支援下列演算法：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-is-alg-supported.html)

`dwFlags` 【in】  
修改函數行為的旗標。這可以是零或下列值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-is-alg-supported.html)

## 傳回值
<a name="ksp-library-apis-is-alg-supported-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszAlgId` 參數包含不支援的值。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hProvider`無效。  | 

# 具有金鑰儲存提供者 (KSP) 的 NCryptEnumAlgorithms
<a name="ksp-library-apis-enum-algorithms"></a>

`NCryptEnumAlgorithms` 函數會擷取金鑰儲存提供者 (KSP) 支援的演算法名稱。

## Parameters
<a name="ksp-library-apis-enum-algorithms-parameters"></a>

 `hProvider` 【in】   
 要列舉演算法之金鑰儲存提供者的控制代碼。使用 [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)函數取得此控點。

 `dwAlgOperations` 【in】   
指定要列舉哪些演算法類別的一組值。您可以使用零列舉所有演算法，或結合下列一或多個值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-enum-algorithms.html)

`pdwAlgCount` 【輸出】  
`ppAlgList` 陣列中存放元素數目的 DWORD 地址。

`ppAlgList` 【輸出】  
儲存已註冊演算法名稱陣列的`NCryptAlgorithmName`結構指標地址。`pdwAlgCount` 參數指出此陣列中的元素數目。

`dwFlags` 【in】  
用於修改函數行為的旗標。使用零或下列值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-enum-algorithms.html)

## 傳回值
<a name="ksp-library-apis-open-key-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `dwAlgOperations` 參數包含不支援的值。  | 

# NCryptEnumKeys 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-enum-keys"></a>

NCryptEnumKeys 函數會列出儲存在金鑰儲存提供者 (KSP) 中的金鑰。

## Parameters
<a name="ksp-library-apis-enum-keys-parameters"></a>

 `hProvider` 【in】   
金鑰儲存提供者控制代碼。使用 [`NCryptOpenStorageProvider`](ksp-library-apis-open-provider.md)取得此控制代碼。

 `pszScope` 【in、未使用】   
 將此參數設定為 NULL。

 `ppKeyName` 【輸出】   
儲存金鑰名稱之`NCryptKeyName`結構的指標地址。若要在使用後釋放此記憶體，請呼叫 `NCryptFreeBuffer`。

`ppEnumState` 【輸入、輸出】  
追蹤列舉進度的 VOID 指標地址。金鑰儲存提供者會在內部使用此資訊來管理列舉序列。若要從頭開始新的列舉，請將此指標設定為 NULL。  
若要在完成列舉後釋放此記憶體，請將此指標傳遞至 `NCryptFreeBuffer`。

`dwFlags` 【in】  
用於修改函數行為的旗標。此函數沒有旗標。

## 傳回值
<a name="ksp-library-apis-enum-keys-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hProvider`無效。  | 
|  NTE\$1NO\$1MORE\$1ITEMS  |  列舉已列出所有可用的金鑰。  | 

# NCryptExportKey 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-export-key"></a>

`NCryptExportKey` 函數會將 KSP 金鑰匯出至記憶體 BLOB。此函數僅支援匯出公有金鑰。

## Parameters
<a name="ksp-library-apis-export-key-parameters"></a>

 `hKey` 【in】  
要匯出之金鑰的控制代碼。

 `hExportKey` 【in、未使用】  
 AWS CloudHSM 金鑰儲存提供者 (KSP) 不會使用此參數。

`pszBlobType` 【in】  
null 終止的 Unicode 字串，指定要匯出的BLOB類型。 AWS CloudHSM 金鑰儲存提供者 (KSP) 支援下列值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-export-key.html)

`pParameterList` 【in、未使用】  
AWS CloudHSM 金鑰儲存提供者 (KSP) 不會使用此參數。

`pbOutput` 【輸出，選用】  
儲存金鑰 BLOB 的緩衝區地址。使用 指定緩衝區大小`cbOutput`。如果設定為 NULL，函數會將所需的大小 （以位元組為單位） 存放在 指向的 DWORD 中`pcbResult`。

`cbOutput` 【in】  
`pbOutput` 緩衝區的大小，以位元組為單位。

`pcbResult` 【輸出】  
存放複製到`pbOutput`緩衝區的位元組數的 DWORD 變數地址。如果 `pbOutput`是 NULL，則函數會以位元組為單位存放所需的緩衝區大小。

`dwFlags` 【in】  
修改函數運作方式的旗標。您可以使用零或下列項目：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-export-key.html)

## 傳回值
<a name="ksp-library-apis-export-key-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hProvider`無效。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1BAD\$1KEY\$1STATE  |  金鑰狀態無效。  | 
|  NTE\$1NOT\$1SUPPORTED  |  `pszBlobType` 或 `dwFlags` 參數包含不支援的值。  | 
|  STATUS\$1INTERNAL\$1ERROR  |  操作期間發生內部錯誤。  | 

# NCryptSignHash 與金鑰儲存提供者 (KSP)
<a name="ksp-library-apis-sign-hash"></a>

`NCryptSignHash` 函數會建立雜湊值的簽章。

## Parameters
<a name="ksp-library-apis-sign-hash-parameters"></a>

 `hKey` 【in】   
 用來簽署雜湊之金鑰的控制代碼。

`pPaddingInfo` 【in，選用】  
包含填補資訊的結構指標。結構類型取決於 `dwFlags`值。僅將此參數與非對稱金鑰搭配使用；將其他金鑰類型設為 NULL。

`pbHashValue` 【in】  
緩衝區的指標，其中包含要簽署的雜湊值。使用 指定緩衝區大小`cbHashValue`。

`cbHashValue` 【in】  
要簽署之`pbHashValue`緩衝區的大小，以位元組為單位。

`pbSignature` 【輸出】  
儲存簽章的緩衝區地址。使用 指定緩衝區大小`cbSignature`。  
若要判斷所需的緩衝區大小，請將此參數設定為 NULL。函數會將所需的大小 （以位元組為單位） 存放在 指向的位置`pcbResult`。

`cbSignature` 【in】  
`pbSignature` 緩衝區的大小，以位元組為單位。如果 `pbSignature`是 NULL，則函數會忽略此參數。

`pcbResult` 【輸出】  
指向 DWORD 變數的指標，可存放複製到`pbSignature`緩衝區的位元組數。  
如果 `pbSignature`是 NULL，則會以位元組為單位存放所需的緩衝區大小。

`dwFlags` 【in】  
用於修改函數行為的旗標。允許的旗標取決於您的金鑰類型。使用下列其中一個值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-sign-hash.html)

## 傳回值
<a name="ksp-library-apis-sign-hash-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hKey`無效。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1BUFFER\$1TOO\$1SMALL  |  `pcbOutput` 參數太小，無法傳回值。  | 
|  NTE\$1BAD\$1KEY\$1STATE  |  金鑰狀態無效。  | 
|  NTE\$1INTERNAL\$1ERROR  |  簽署雜湊時發生內部錯誤。  | 

# NCryptVerifySignature with Key Storage Provider (KSP)
<a name="ksp-library-apis-verify-signature"></a>

`NCryptVerifySignature` 函數會確認簽章是否符合指定的雜湊。

## Parameters
<a name="ksp-library-apis-verify-signature-parameters"></a>

 `hKey` 【in】   
 用來解密簽章的金鑰控點。您必須使用用來使用 簽署資料的金鑰對公有金鑰部分[`NCryptSignHash`](ksp-library-apis-sign-hash.md)。

`pPaddingInfo` 【in，選用】  
包含填補資訊的結構指標。結構類型取決於 `dwFlags`值。僅將此參數與非對稱金鑰搭配使用；將其他金鑰類型設為 NULL。

`pbHashValue` 【in】  
緩衝區的指標，其中包含要簽署的雜湊值。使用 指定緩衝區大小`cbHashValue`。

`cbHashValue` 【in】  
`pbHashValue` 緩衝區的大小，以位元組為單位。

`pbSignature` 【輸出】  
包含資料簽署雜湊的緩衝區地址。使用 [`NCryptSignHash`](ksp-library-apis-sign-hash.md)建立此簽章。使用 指定緩衝區大小`cbSignature`。

`cbSignature` 【in】  
`pbSignature` 緩衝區的大小，以位元組為單位。使用 [`NCryptSignHash`](ksp-library-apis-sign-hash.md)建立簽章。

`dwFlags` 【in】  
用於修改函數行為的旗標。允許的旗標取決於您的金鑰類型。使用下列其中一個值：    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/ksp-library-apis-verify-signature.html)

## 傳回值
<a name="ksp-library-apis-verify-signature-return-value"></a>

函數會傳回狀態碼，表示成功或失敗。

常見的傳回代碼包括：


****  

| 傳回代碼 | Description | 
| --- | --- | 
|  ERROR\$1SUCCESS  |  操作已成功完成。  | 
|  NTE\$1INVALID\$1PARAMETER  |  一或多個參數無效。  | 
|  NTE\$1FAIL  |  操作無法完成。  | 
|  NTE\$1INVALID\$1HANDLE  |  中的控點`hKey`無效。  | 
|  NTE\$1BAD\$1FLAGS  |  `dwFlags` 參數包含無效的值。  | 
|  NTE\$1BAD\$1SIGNATURE  |  簽章未驗證。  | 
|  NTE\$1BAD\$1KEY\$1STATE  |  金鑰狀態無效。  | 
|  NTE\$1INTERNAL\$1ERROR  |  驗證簽章時發生內部錯誤。  | 