Message ID | 1f15cfe8b380af55cd1bd0535abfefcbb68f6b1f.1725972335.git.lukas@wunner.de |
---|---|
State | Accepted |
Commit | 5ba296674e468ddd40b6ef5aa845c2d2ee794b84 |
Headers | show |
Series | Migrate to sig_alg and templatize ecdsa | expand |
On 9/10/24 10:30 AM, Lukas Wunner wrote: > The crypto_sig_*() API calls lived in sig.c so far because they needed > access to struct crypto_sig_type: This was necessary to differentiate > between signature algorithms that had already been migrated from > crypto_akcipher to crypto_sig and those that hadn't yet. > > Now that all algorithms have been migrated, the API calls can become > static inlines in <crypto/sig.h> to mimic what <crypto/akcipher.h> is > doing. > > Signed-off-by: Lukas Wunner <lukas@wunner.de> > --- > crypto/sig.c | 46 ------------------------------------------- > include/crypto/sig.h | 47 +++++++++++++++++++++++++++++++++----------- > 2 files changed, 36 insertions(+), 57 deletions(-) > > diff --git a/crypto/sig.c b/crypto/sig.c > index 1e6b0d677472..84d0ea9fd73b 100644 > --- a/crypto/sig.c > +++ b/crypto/sig.c > @@ -84,52 +84,6 @@ struct crypto_sig *crypto_alloc_sig(const char *alg_name, u32 type, u32 mask) > } > EXPORT_SYMBOL_GPL(crypto_alloc_sig); > > -int crypto_sig_maxsize(struct crypto_sig *tfm) > -{ > - struct sig_alg *alg = crypto_sig_alg(tfm); > - > - return alg->max_size(tfm); > -} > -EXPORT_SYMBOL_GPL(crypto_sig_maxsize); > - > -int crypto_sig_sign(struct crypto_sig *tfm, > - const void *src, unsigned int slen, > - void *dst, unsigned int dlen) > -{ > - struct sig_alg *alg = crypto_sig_alg(tfm); > - > - return alg->sign(tfm, src, slen, dst, dlen); > -} > -EXPORT_SYMBOL_GPL(crypto_sig_sign); > - > -int crypto_sig_verify(struct crypto_sig *tfm, > - const void *src, unsigned int slen, > - const void *digest, unsigned int dlen) > -{ > - struct sig_alg *alg = crypto_sig_alg(tfm); > - > - return alg->verify(tfm, src, slen, digest, dlen); > -} > -EXPORT_SYMBOL_GPL(crypto_sig_verify); > - > -int crypto_sig_set_pubkey(struct crypto_sig *tfm, > - const void *key, unsigned int keylen) > -{ > - struct sig_alg *alg = crypto_sig_alg(tfm); > - > - return alg->set_pub_key(tfm, key, keylen); > -} > -EXPORT_SYMBOL_GPL(crypto_sig_set_pubkey); > - > -int crypto_sig_set_privkey(struct crypto_sig *tfm, > - const void *key, unsigned int keylen) > -{ > - struct sig_alg *alg = crypto_sig_alg(tfm); > - > - return alg->set_priv_key(tfm, key, keylen); > -} > -EXPORT_SYMBOL_GPL(crypto_sig_set_privkey); > - > static void sig_prepare_alg(struct sig_alg *alg) > { > struct crypto_alg *base = &alg->base; > diff --git a/include/crypto/sig.h b/include/crypto/sig.h > index f0f52a7c5ae7..bbc902642bf5 100644 > --- a/include/crypto/sig.h > +++ b/include/crypto/sig.h > @@ -130,7 +130,12 @@ static inline void crypto_free_sig(struct crypto_sig *tfm) > * > * @tfm: signature tfm handle allocated with crypto_alloc_sig() > */ > -int crypto_sig_maxsize(struct crypto_sig *tfm); > +static inline int crypto_sig_maxsize(struct crypto_sig *tfm) > +{ > + struct sig_alg *alg = crypto_sig_alg(tfm); > + > + return alg->max_size(tfm); > +} > > /** > * crypto_sig_sign() - Invoke signing operation > @@ -145,9 +150,14 @@ int crypto_sig_maxsize(struct crypto_sig *tfm); > * > * Return: zero on success; error code in case of error > */ > -int crypto_sig_sign(struct crypto_sig *tfm, > - const void *src, unsigned int slen, > - void *dst, unsigned int dlen); > +static inline int crypto_sig_sign(struct crypto_sig *tfm, > + const void *src, unsigned int slen, > + void *dst, unsigned int dlen) > +{ > + struct sig_alg *alg = crypto_sig_alg(tfm); > + > + return alg->sign(tfm, src, slen, dst, dlen); > +} > > /** > * crypto_sig_verify() - Invoke signature verification > @@ -163,9 +173,14 @@ int crypto_sig_sign(struct crypto_sig *tfm, > * > * Return: zero on verification 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); > +static inline int crypto_sig_verify(struct crypto_sig *tfm, > + const void *src, unsigned int slen, > + const void *digest, unsigned int dlen) > +{ > + struct sig_alg *alg = crypto_sig_alg(tfm); > + > + return alg->verify(tfm, src, slen, digest, dlen); > +} > > /** > * crypto_sig_set_pubkey() - Invoke set public key operation > @@ -180,8 +195,13 @@ int crypto_sig_verify(struct crypto_sig *tfm, > * > * Return: zero on success; error code in case of error > */ > -int crypto_sig_set_pubkey(struct crypto_sig *tfm, > - const void *key, unsigned int keylen); > +static inline int crypto_sig_set_pubkey(struct crypto_sig *tfm, > + const void *key, unsigned int keylen) > +{ > + struct sig_alg *alg = crypto_sig_alg(tfm); > + > + return alg->set_pub_key(tfm, key, keylen); > +} > > /** > * crypto_sig_set_privkey() - Invoke set private key operation > @@ -196,6 +216,11 @@ int crypto_sig_set_pubkey(struct crypto_sig *tfm, > * > * 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); > +static inline int crypto_sig_set_privkey(struct crypto_sig *tfm, > + const void *key, unsigned int keylen) > +{ > + struct sig_alg *alg = crypto_sig_alg(tfm); > + > + return alg->set_priv_key(tfm, key, keylen); > +} > #endif Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
diff --git a/crypto/sig.c b/crypto/sig.c index 1e6b0d677472..84d0ea9fd73b 100644 --- a/crypto/sig.c +++ b/crypto/sig.c @@ -84,52 +84,6 @@ struct crypto_sig *crypto_alloc_sig(const char *alg_name, u32 type, u32 mask) } EXPORT_SYMBOL_GPL(crypto_alloc_sig); -int crypto_sig_maxsize(struct crypto_sig *tfm) -{ - struct sig_alg *alg = crypto_sig_alg(tfm); - - return alg->max_size(tfm); -} -EXPORT_SYMBOL_GPL(crypto_sig_maxsize); - -int crypto_sig_sign(struct crypto_sig *tfm, - const void *src, unsigned int slen, - void *dst, unsigned int dlen) -{ - struct sig_alg *alg = crypto_sig_alg(tfm); - - return alg->sign(tfm, src, slen, dst, dlen); -} -EXPORT_SYMBOL_GPL(crypto_sig_sign); - -int crypto_sig_verify(struct crypto_sig *tfm, - const void *src, unsigned int slen, - const void *digest, unsigned int dlen) -{ - struct sig_alg *alg = crypto_sig_alg(tfm); - - return alg->verify(tfm, src, slen, digest, dlen); -} -EXPORT_SYMBOL_GPL(crypto_sig_verify); - -int crypto_sig_set_pubkey(struct crypto_sig *tfm, - const void *key, unsigned int keylen) -{ - struct sig_alg *alg = crypto_sig_alg(tfm); - - return alg->set_pub_key(tfm, key, keylen); -} -EXPORT_SYMBOL_GPL(crypto_sig_set_pubkey); - -int crypto_sig_set_privkey(struct crypto_sig *tfm, - const void *key, unsigned int keylen) -{ - struct sig_alg *alg = crypto_sig_alg(tfm); - - return alg->set_priv_key(tfm, key, keylen); -} -EXPORT_SYMBOL_GPL(crypto_sig_set_privkey); - static void sig_prepare_alg(struct sig_alg *alg) { struct crypto_alg *base = &alg->base; diff --git a/include/crypto/sig.h b/include/crypto/sig.h index f0f52a7c5ae7..bbc902642bf5 100644 --- a/include/crypto/sig.h +++ b/include/crypto/sig.h @@ -130,7 +130,12 @@ static inline void crypto_free_sig(struct crypto_sig *tfm) * * @tfm: signature tfm handle allocated with crypto_alloc_sig() */ -int crypto_sig_maxsize(struct crypto_sig *tfm); +static inline int crypto_sig_maxsize(struct crypto_sig *tfm) +{ + struct sig_alg *alg = crypto_sig_alg(tfm); + + return alg->max_size(tfm); +} /** * crypto_sig_sign() - Invoke signing operation @@ -145,9 +150,14 @@ int crypto_sig_maxsize(struct crypto_sig *tfm); * * Return: zero on success; error code in case of error */ -int crypto_sig_sign(struct crypto_sig *tfm, - const void *src, unsigned int slen, - void *dst, unsigned int dlen); +static inline int crypto_sig_sign(struct crypto_sig *tfm, + const void *src, unsigned int slen, + void *dst, unsigned int dlen) +{ + struct sig_alg *alg = crypto_sig_alg(tfm); + + return alg->sign(tfm, src, slen, dst, dlen); +} /** * crypto_sig_verify() - Invoke signature verification @@ -163,9 +173,14 @@ int crypto_sig_sign(struct crypto_sig *tfm, * * Return: zero on verification 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); +static inline int crypto_sig_verify(struct crypto_sig *tfm, + const void *src, unsigned int slen, + const void *digest, unsigned int dlen) +{ + struct sig_alg *alg = crypto_sig_alg(tfm); + + return alg->verify(tfm, src, slen, digest, dlen); +} /** * crypto_sig_set_pubkey() - Invoke set public key operation @@ -180,8 +195,13 @@ int crypto_sig_verify(struct crypto_sig *tfm, * * Return: zero on success; error code in case of error */ -int crypto_sig_set_pubkey(struct crypto_sig *tfm, - const void *key, unsigned int keylen); +static inline int crypto_sig_set_pubkey(struct crypto_sig *tfm, + const void *key, unsigned int keylen) +{ + struct sig_alg *alg = crypto_sig_alg(tfm); + + return alg->set_pub_key(tfm, key, keylen); +} /** * crypto_sig_set_privkey() - Invoke set private key operation @@ -196,6 +216,11 @@ int crypto_sig_set_pubkey(struct crypto_sig *tfm, * * 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); +static inline int crypto_sig_set_privkey(struct crypto_sig *tfm, + const void *key, unsigned int keylen) +{ + struct sig_alg *alg = crypto_sig_alg(tfm); + + return alg->set_priv_key(tfm, key, keylen); +} #endif
The crypto_sig_*() API calls lived in sig.c so far because they needed access to struct crypto_sig_type: This was necessary to differentiate between signature algorithms that had already been migrated from crypto_akcipher to crypto_sig and those that hadn't yet. Now that all algorithms have been migrated, the API calls can become static inlines in <crypto/sig.h> to mimic what <crypto/akcipher.h> is doing. Signed-off-by: Lukas Wunner <lukas@wunner.de> --- crypto/sig.c | 46 ------------------------------------------- include/crypto/sig.h | 47 +++++++++++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 57 deletions(-)