Commit ea644b8c authored by Kamil Konieczny's avatar Kamil Konieczny Committed by Herbert Xu

crypto: doc - Fixed bugs, added example usage of calc_hash().

- Fixed bugs in example for shash and rng (added missing "*" and " *").
- Corrected pr_info() in calc_hash().
- Added example usage of calc_hash().
- No need for negate PTR_ERR to get error code, as crypto_alloc_rng
  already returns negative values like ERR_PTR(-ENOMEM). Fixed.
Signed-off-by: default avatarKamil Konieczny <k.konieczny@partner.samsung.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 8270f5d7
...@@ -155,9 +155,9 @@ Code Example For Use of Operational State Memory With SHASH ...@@ -155,9 +155,9 @@ Code Example For Use of Operational State Memory With SHASH
char ctx[]; char ctx[];
}; };
static struct sdesc init_sdesc(struct crypto_shash *alg) static struct sdesc *init_sdesc(struct crypto_shash *alg)
{ {
struct sdesc sdesc; struct sdesc *sdesc;
int size; int size;
size = sizeof(struct shash_desc) + crypto_shash_descsize(alg); size = sizeof(struct shash_desc) + crypto_shash_descsize(alg);
...@@ -169,15 +169,16 @@ Code Example For Use of Operational State Memory With SHASH ...@@ -169,15 +169,16 @@ Code Example For Use of Operational State Memory With SHASH
return sdesc; return sdesc;
} }
static int calc_hash(struct crypto_shashalg, static int calc_hash(struct crypto_shash *alg,
const unsigned chardata, unsigned int datalen, const unsigned char *data, unsigned int datalen,
unsigned chardigest) { unsigned char *digest)
struct sdesc sdesc; {
struct sdesc *sdesc;
int ret; int ret;
sdesc = init_sdesc(alg); sdesc = init_sdesc(alg);
if (IS_ERR(sdesc)) { if (IS_ERR(sdesc)) {
pr_info("trusted_key: can't alloc %s\n", hash_alg); pr_info("can't alloc sdesc\n");
return PTR_ERR(sdesc); return PTR_ERR(sdesc);
} }
...@@ -186,6 +187,23 @@ Code Example For Use of Operational State Memory With SHASH ...@@ -186,6 +187,23 @@ Code Example For Use of Operational State Memory With SHASH
return ret; return ret;
} }
static int test_hash(const unsigned char *data, unsigned int datalen,
unsigned char *digest)
{
struct crypto_shash *alg;
char *hash_alg_name = "sha1-padlock-nano";
int ret;
alg = crypto_alloc_shash(hash_alg_name, CRYPTO_ALG_TYPE_SHASH, 0);
if (IS_ERR(alg)) {
pr_info("can't alloc alg %s\n", hash_alg_name);
return PTR_ERR(alg);
}
ret = calc_hash(alg, data, datalen, digest);
crypto_free_shash(alg);
return ret;
}
Code Example For Random Number Generator Usage Code Example For Random Number Generator Usage
---------------------------------------------- ----------------------------------------------
...@@ -195,8 +213,8 @@ Code Example For Random Number Generator Usage ...@@ -195,8 +213,8 @@ Code Example For Random Number Generator Usage
static int get_random_numbers(u8 *buf, unsigned int len) static int get_random_numbers(u8 *buf, unsigned int len)
{ {
struct crypto_rngrng = NULL; struct crypto_rng *rng = NULL;
chardrbg = "drbg_nopr_sha256"; /* Hash DRBG with SHA-256, no PR */ char *drbg = "drbg_nopr_sha256"; /* Hash DRBG with SHA-256, no PR */
int ret; int ret;
if (!buf || !len) { if (!buf || !len) {
...@@ -207,7 +225,7 @@ Code Example For Random Number Generator Usage ...@@ -207,7 +225,7 @@ Code Example For Random Number Generator Usage
rng = crypto_alloc_rng(drbg, 0, 0); rng = crypto_alloc_rng(drbg, 0, 0);
if (IS_ERR(rng)) { if (IS_ERR(rng)) {
pr_debug("could not allocate RNG handle for %s\n", drbg); pr_debug("could not allocate RNG handle for %s\n", drbg);
return -PTR_ERR(rng); return PTR_ERR(rng);
} }
ret = crypto_rng_get_bytes(rng, buf, len); ret = crypto_rng_get_bytes(rng, buf, len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment