非對稱簽名演算法定義¶
-
struct sig_alg¶
通用公鑰簽名演算法
定義:
struct sig_alg {
int (*sign)(struct crypto_sig *tfm,const void *src, unsigned int slen, void *dst, unsigned int dlen);
int (*verify)(struct crypto_sig *tfm,const void *src, unsigned int slen, const void *digest, unsigned int dlen);
int (*set_pub_key)(struct crypto_sig *tfm, const void *key, unsigned int keylen);
int (*set_priv_key)(struct crypto_sig *tfm, const void *key, unsigned int keylen);
unsigned int (*key_size)(struct crypto_sig *tfm);
unsigned int (*digest_size)(struct crypto_sig *tfm);
unsigned int (*max_size)(struct crypto_sig *tfm);
int (*init)(struct crypto_sig *tfm);
void (*exit)(struct crypto_sig *tfm);
struct crypto_alg base;
};
成員
sign函式執行公鑰演算法定義的簽名操作。 成功時,返回簽名大小。 可選。
verify函式執行公鑰演算法定義的完整驗證操作,返回驗證狀態。 可選。
set_pub_key函式呼叫演算法特定的設定公鑰函式,該函式知道如何解碼和解釋 BER 編碼的公鑰和引數。 必需。
set_priv_key函式呼叫演算法特定的設定私鑰函式,該函式知道如何解碼和解釋 BER 編碼的私鑰和引數。 可選。
key_size函式返回金鑰大小。 必需。
digest_size函式返回最大摘要大小。 可選。
max_size函式返回最大簽名大小。 可選。
init初始化加密轉換物件。 此函式用於初始化加密轉換物件。 此函式僅在例項化時呼叫一次,就在分配轉換上下文之後。 如果加密硬體有一些特殊的軟體處理要求,則此函式應檢查轉換的精確要求並將任何軟體回退到位。
exit取消初始化加密轉換物件。 這是 init 的對應項,用於刪除在 init 中設定的各種更改。
base通用加密 API 演算法資料結構
非對稱簽名 API¶
公鑰簽名 API 與 CRYPTO_ALG_TYPE_SIG 型別的演算法一起使用(在 /proc/crypto 中列為“sig”型別)
-
struct crypto_sig *crypto_alloc_sig(const char *alg_name, u32 type, u32 mask)¶
分配簽名 tfm 控制代碼
引數
const char *alg_name是簽名演算法的 cra_name / 名稱或 cra_driver_name / 驅動程式名稱,例如“ecdsa”
u32 type指定演算法的型別
u32 mask指定演算法的掩碼
描述
為公鑰簽名演算法分配控制代碼。 返回的 struct crypto_sig 是簽名操作的任何後續 API 呼叫所需的控制代碼。
返回
-
void crypto_free_sig(struct crypto_sig *tfm)¶
釋放簽名 tfm 控制代碼
-
unsigned int crypto_sig_keysize(struct crypto_sig *tfm)¶
獲取金鑰大小
引數
struct crypto_sig *tfm使用
crypto_alloc_sig()分配的簽名 tfm 控制代碼
描述
函式返回金鑰大小(以位為單位)。 函式假定金鑰已在轉換中設定。 如果在沒有設定金鑰或設定金鑰失敗的情況下呼叫此函式,則最終可能會出現 NULL 解引用。
-
unsigned int crypto_sig_digestsize(struct crypto_sig *tfm)¶
獲取最大摘要大小
引數
struct crypto_sig *tfm使用
crypto_alloc_sig()分配的簽名 tfm 控制代碼
描述
函式返回最大摘要大小(以位元組為單位)。 函式假定金鑰已在轉換中設定。 如果在沒有設定金鑰或設定金鑰失敗的情況下呼叫此函式,則最終可能會出現 NULL 解引用。
-
unsigned int crypto_sig_maxsize(struct crypto_sig *tfm)¶
獲取最大簽名大小
引數
struct crypto_sig *tfm使用
crypto_alloc_sig()分配的簽名 tfm 控制代碼
描述
函式返回最大簽名大小(以位元組為單位)。 函式假定金鑰已在轉換中設定。 如果在沒有設定金鑰或設定金鑰失敗的情況下呼叫此函式,則最終可能會出現 NULL 解引用。
-
int crypto_sig_sign(struct crypto_sig *tfm, const void *src, unsigned int slen, void *dst, unsigned int dlen)¶
呼叫簽名操作
引數
struct crypto_sig *tfm使用
crypto_alloc_sig()分配的簽名 tfm 控制代碼const void *src源緩衝區
unsigned int slen源長度
void *dst目標緩衝區
unsigned int dlen目標長度
描述
函式呼叫給定演算法的特定簽名操作
返回
成功時返回簽名大小; 錯誤時返回錯誤程式碼
-
int crypto_sig_verify(struct crypto_sig *tfm, const void *src, unsigned int slen, const void *digest, unsigned int dlen)¶
呼叫簽名驗證
引數
struct crypto_sig *tfm使用
crypto_alloc_sig()分配的簽名 tfm 控制代碼const void *src源緩衝區
unsigned int slen源長度
const void *digest摘要
unsigned int dlen摘要長度
描述
函式呼叫給定演算法的特定簽名驗證操作。
返回
驗證成功時返回零; 錯誤時返回錯誤程式碼。
-
int crypto_sig_set_pubkey(struct crypto_sig *tfm, const void *key, unsigned int keylen)¶
呼叫設定公鑰操作
引數
struct crypto_sig *tfmtfm 控制代碼
const void *keyBER 編碼的公鑰、演算法 OID、引數長度、BER 編碼的引數
unsigned int keylen金鑰的長度(不包括其他資料)
描述
函式呼叫演算法特定的設定金鑰函式,該函式知道如何解碼和解釋編碼的金鑰和引數
返回
成功時返回零; 錯誤時返回錯誤程式碼
-
int crypto_sig_set_privkey(struct crypto_sig *tfm, const void *key, unsigned int keylen)¶
呼叫設定私鑰操作
引數
struct crypto_sig *tfmtfm 控制代碼
const void *keyBER 編碼的私鑰、演算法 OID、引數長度、BER 編碼的引數
unsigned int keylen金鑰的長度(不包括其他資料)
描述
函式呼叫演算法特定的設定金鑰函式,該函式知道如何解碼和解釋編碼的金鑰和引數
返回
成功時返回零; 錯誤時返回錯誤程式碼