2016-05-01 13:05:52

by Gadre Nayan

[permalink] [raw]
Subject: Crypto hash function decryption

Hi,

I wanted to implement a simple encryption decryption of data in kernel
space to start with the kernel crypto library.

I have the following:

int myFunction() {

struct scatterlist sg;
struct crypto_hash *tfm;
struct hash_desc desc;
unsigned char input[21];

pr_err("Starting Crypto hash function\n");
strcpy(input, "12345678901234567890");

tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC);

desc.tfm = tfm;
desc.flags = 0;

sg_init_one(&sg, input, 21);
crypto_hash_init(&desc);

crypto_hash_update(&desc, &sg, 10);
crypto_hash_final(&desc, dataptr);

crypto_free_hash(tfm);
pr_err("Encryption done\nip: %s\nop: %s\n", input, dataptr);


return 0;
}

So I can get this function to encrypt the data. I wanted to know how I
can decrypt this data (dataptr) back to my original string "123....".

What api's should I use.

THanks.


2016-05-01 13:24:21

by Stephan Müller

[permalink] [raw]
Subject: Re: Crypto hash function decryption

Am Sonntag, 1. Mai 2016, 18:35:51 schrieb Gadre Nayan:

Hi Gadre,

> Hi,
>
> I wanted to implement a simple encryption decryption of data in kernel
> space to start with the kernel crypto library.
>
> I have the following:
>
> int myFunction() {
>
> struct scatterlist sg;
> struct crypto_hash *tfm;
> struct hash_desc desc;
> unsigned char input[21];
>
> pr_err("Starting Crypto hash function\n");
> strcpy(input, "12345678901234567890");
>
> tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC);
>
> desc.tfm = tfm;
> desc.flags = 0;
>
> sg_init_one(&sg, input, 21);
> crypto_hash_init(&desc);
>
> crypto_hash_update(&desc, &sg, 10);
> crypto_hash_final(&desc, dataptr);
>
> crypto_free_hash(tfm);
> pr_err("Encryption done\nip: %s\nop: %s\n", input, dataptr);
>
>
> return 0;
> }
>
> So I can get this function to encrypt the data. I wanted to know how I
> can decrypt this data (dataptr) back to my original string "123....".
>
> What api's should I use.

Maybe a peek into Handbook of Applied Cryptography may help here: a hash
cannot be decrypted.

Besides the crypto_hash_* API is discouraged to be used.

Ciao
Stephan

2016-05-01 15:54:27

by Stephan Müller

[permalink] [raw]
Subject: Re: Crypto hash function decryption

Am Sonntag, 1. Mai 2016, 19:05:12 schrieb Gadre Nayan:

Hi Gadre,

> Yes, i was reading about that till your reply came.
>
> So then if not hash...then should I use asymmetric or symmetric key APIs.
>
> My kernel version is 3.19, what APIs can I use which can compile with this
> kernel version.
>
> The latest kernel 4.5 has skcipher fully implemented but I need to work
> with 3.19.

Please read the kernel crypto API documentation:

http://www.chronox.de/crypto-API/index.html
>
> Thanks
>
> On 1 May 2016 6:54 p.m., "Stephan Mueller" <[email protected]> wrote:
> > Am Sonntag, 1. Mai 2016, 18:35:51 schrieb Gadre Nayan:
> >
> > Hi Gadre,
> >
> > > Hi,
> > >
> > > I wanted to implement a simple encryption decryption of data in kernel
> > > space to start with the kernel crypto library.
> > >
> > > I have the following:
> > >
> > > int myFunction() {
> > >
> > > struct scatterlist sg;
> > > struct crypto_hash *tfm;
> > > struct hash_desc desc;
> > > unsigned char input[21];
> > >
> > > pr_err("Starting Crypto hash function\n");
> > > strcpy(input, "12345678901234567890");
> > >
> > > tfm = crypto_alloc_hash("sha1", 0, CRYPTO_ALG_ASYNC);
> > >
> > > desc.tfm = tfm;
> > > desc.flags = 0;
> > >
> > > sg_init_one(&sg, input, 21);
> > > crypto_hash_init(&desc);
> > >
> > > crypto_hash_update(&desc, &sg, 10);
> > > crypto_hash_final(&desc, dataptr);
> > >
> > > crypto_free_hash(tfm);
> > > pr_err("Encryption done\nip: %s\nop: %s\n", input, dataptr);
> > >
> > >
> > > return 0;
> > >
> > > }
> > >
> > > So I can get this function to encrypt the data. I wanted to know how I
> > > can decrypt this data (dataptr) back to my original string "123....".
> > >
> > > What api's should I use.
> >
> > Maybe a peek into Handbook of Applied Cryptography may help here: a hash
> > cannot be decrypted.
> >
> > Besides the crypto_hash_* API is discouraged to be used.
> >
> > Ciao
> > Stephan


Ciao
Stephan