Asymmetric Signature Algorithm Definitions¶
-
struct sig_alg¶
generic public key signature algorithm
Definition:
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;
};
Members
signFunction performs a sign operation as defined by public key algorithm. Optional.
verifyFunction performs a complete verify operation as defined by public key algorithm, returning verification status. Optional.
set_pub_keyFunction invokes the algorithm specific set public key function, which knows how to decode and interpret the BER encoded public key and parameters. Mandatory.
set_priv_keyFunction invokes the algorithm specific set private key function, which knows how to decode and interpret the BER encoded private key and parameters. Optional.
key_sizeFunction returns key size. Mandatory.
digest_sizeFunction returns maximum digest size. Optional.
max_sizeFunction returns maximum signature size. Optional.
initInitialize the cryptographic transformation object. This function is used to initialize the cryptographic transformation object. This function is called only once at the instantiation time, right after the transformation context was allocated. In case the cryptographic hardware has some special requirements which need to be handled by software, this function shall check for the precise requirement of the transformation and put any software fallbacks in place.
exitDeinitialize the cryptographic transformation object. This is a counterpart to init, used to remove various changes set in init.
baseCommon crypto API algorithm data structure
Asymmetric Signature API¶
The Public Key Signature API is used with the algorithms of type CRYPTO_ALG_TYPE_SIG (listed as type “sig” in /proc/crypto)
-
struct crypto_sig *crypto_alloc_sig(const char *alg_name, u32 type, u32 mask)¶
allocate signature tfm handle
Parameters
const char *alg_nameis the cra_name / name or cra_driver_name / driver name of the signing algorithm e.g. “ecdsa”
u32 typespecifies the type of the algorithm
u32 maskspecifies the mask for the algorithm
Description
Allocate a handle for public key signature algorithm. The returned struct crypto_sig is the handle that is required for any subsequent API invocation for signature operations.
Return
- allocated handle in case of success; IS_ERR() is true in case
of an error,
PTR_ERR()returns the error code.
-
void crypto_free_sig(struct crypto_sig *tfm)¶
free signature tfm handle
Parameters
struct crypto_sig *tfmsignature tfm handle allocated with
crypto_alloc_sig()
Description
If tfm is a NULL or error pointer, this function does nothing.
-
unsigned int crypto_sig_keysize(struct crypto_sig *tfm)¶
Get key size
Parameters
struct crypto_sig *tfmsignature tfm handle allocated with
crypto_alloc_sig()
Description
Function returns the key size in bytes. Function assumes that the key is already set in the transformation. If this function is called without a setkey or with a failed setkey, you may end up in a NULL dereference.
-
unsigned int crypto_sig_digestsize(struct crypto_sig *tfm)¶
Get maximum digest size
Parameters
struct crypto_sig *tfmsignature tfm handle allocated with
crypto_alloc_sig()
Description
Function returns the maximum digest size in bytes. Function assumes that the key is already set in the transformation. If this function is called without a setkey or with a failed setkey, you may end up in a NULL dereference.
-
unsigned int crypto_sig_maxsize(struct crypto_sig *tfm)¶
Get maximum signature size
Parameters
struct crypto_sig *tfmsignature tfm handle allocated with
crypto_alloc_sig()
Description
Function returns the maximum signature size in bytes. Function assumes that the key is already set in the transformation. If this function is called without a setkey or with a failed setkey, you may end up in a NULL dereference.
-
int crypto_sig_sign(struct crypto_sig *tfm, const void *src, unsigned int slen, void *dst, unsigned int dlen)¶
Invoke signing operation
Parameters
struct crypto_sig *tfmsignature tfm handle allocated with
crypto_alloc_sig()const void *srcsource buffer
unsigned int slensource length
void *dstdestination obuffer
unsigned int dlendestination length
Description
Function invokes the specific signing operation for a given algorithm
Return
zero on success; error code in case of error
-
int crypto_sig_verify(struct crypto_sig *tfm, const void *src, unsigned int slen, const void *digest, unsigned int dlen)¶
Invoke signature verification
Parameters
struct crypto_sig *tfmsignature tfm handle allocated with
crypto_alloc_sig()const void *srcsource buffer
unsigned int slensource length
const void *digestdigest
unsigned int dlendigest length
Description
Function invokes the specific signature verification operation for a given algorithm.
Return
zero on verification success; error code in case of error.
-
int crypto_sig_set_pubkey(struct crypto_sig *tfm, const void *key, unsigned int keylen)¶
Invoke set public key operation
Parameters
struct crypto_sig *tfmtfm handle
const void *keyBER encoded public key, algo OID, paramlen, BER encoded parameters
unsigned int keylenlength of the key (not including other data)
Description
Function invokes the algorithm specific set key function, which knows how to decode and interpret the encoded key and parameters
Return
zero on success; error code in case of error
-
int crypto_sig_set_privkey(struct crypto_sig *tfm, const void *key, unsigned int keylen)¶
Invoke set private key operation
Parameters
struct crypto_sig *tfmtfm handle
const void *keyBER encoded private key, algo OID, paramlen, BER encoded parameters
unsigned int keylenlength of the key (not including other data)
Description
Function invokes the algorithm specific set key function, which knows how to decode and interpret the encoded key and parameters
Return
zero on success; error code in case of error