Topic: [Solved] DSA wolfssl

I try to apply an example from using  a DSA to sign a message with wolfssl and  i have encountered a few problems

DsaKey key;

byte   message[] = { // message data to sign }

byte   dsaKeyBuffer[] = { // holds the raw data from the DSA key, maybe from a file like dsa512.der }

=>I have a file with extension .der, How can i fill the dsaKeyBuffer  from this file? I'm on FreeRtos. When i call this function below, i get an error. It does not return 0.

int u=wc_DsaPrivateKeyDecode(dsaKeyBuffer, &idx, &key, sizeof(dsaKeyBuffer));

Thank you

Share

Re: [Solved] DSA wolfssl

Hi,

wc_DsaPrivateKeyDecode() is the correct function to import a DER-formatted DSA key into a DsaKey structure.  What error is being returned from the function?

Thanks,
Chris

3 (edited by rskkya 2016-02-16 02:47:10)

Re: [Solved] DSA wolfssl

Hi Chris!
Thank you for your answer...
I guess that i don't have a DER-formatted DSA key so it returns negative number (-140) instead of 0 so i was wondering how can i fill the buffer with DER-formatted DSA key because if i fill it with a normal string, it returns negative number. I have done some researches about DER format but i can't figure out exactly how to fill this buffer with a DER-formatted DSA key so wc_DsaPrivateKeyDecode() will return 0
Sam

Share

Re: [Solved] DSA wolfssl

With OpenSSL i was able to obtain a DER formatted key like this but , i always get the same error. I did that:

byte   dsaKeyBuffer[4096] = {
"read DSA key\n"
"Private - Key : (1024 bit)\n"
"priv :\n"
    "25 : 38 : 3b : a1 : 19 : 75 : df : 9b : f5 : 72 : 53 : 4f : 39 : e1 : 1c :\n"
    "ec : 13 : 84 : 82 : 18\n"
    "pub :\n"
    "00 : e8 : 1f : 7c : b7 : c0 : 54 : 51 : a7 : 28 : 2d : 58 : 7c : de : d4 :\n"
    "5c : dd : d5 : 76 : 84 : 3c : 36 : 20 : c0 : c3 : 25 : d7 : 3a : 38 : e1 :\n"
    "54 : c8 : fd : 40 : 68 : 1a : 21 : 54 : 26 : 39 : 14 : bf : f6 : a3 : 9c :\n"
    "5e : d9 : 2b : f7 : c9 : 25 : ba : 00 : 09:cb : 7f : 0c : 4a : 24 : fd :\n"
    "15 : 16 : 15 : 48 : cd : 0b : 52 : 44 : 40 : 7b : 90 : 63 : 2b : 90 : 22 :\n"
    "c5 : 18 : 05 : 80 : 53 : af : 83 : 1f : 54 : e2 : b0 : a2 : 0b : 5a : 92 :\n"
    "24 : e1 : 62 : 28 : 3f : b7 : ca : b9 : 89 : d6 : a0 : b7 : ad : ae : 05 :\n"
    "e1 : c1 : 59 : 40 : ed : 4a : 1b : 68 : a7 : 7b : fb : c3 : 20 : 81 : ef :\n"
    "4b : f3 : 69 : 91 : b0 : ce : 3a : b0 : 38\n"
    "p :\n"
    "00 : f7 : 4b : f9 : bb : 15 : 98 : eb : dd : de : 1e : 4e : 71 : 88 : 85 :\n"
    "f2 : b7 : ba : e2 : 4a : da : 76 : 40 : cd : 69 : 48 : 9e : 83 : 7c : 11 :\n"
    "f7 : 65 : 31 : 78 : f5 : 25 : 2d : f7 : b7 : f8 : 52 : 3f : be : d8 : b6 :\n"
    "c5 : fe : 18 : 15 : 5b : b9 : d5 : 92 : 86 : bc : b2 : 17 : 7c : d8 : b0 :\n"
    "be : a0 : 7c : f2 : d5 : 73 : 7a : 58 : 8f : 8d : e5 : 4a : 00 : 99 : 83 :\n"
    "4a : c0 : 9e : 16 : 09:a1 : 10 : 34 : d5 : 19 : bb : 63 : e3 : dd : 83 :\n"
    "74 : 7f : 10 : ca : 73 : 75 : ee : 31 : 4a : dd : 9f : e0 : 02 : 6a : 9d :\n"
    "ee : b2 : 4b : a7 : 6b : 2a : 6c : c7 : 86 : 77 : e8 : 04 : 15 : dc : 92 :\n"
    "b4 : 7a : 29 : 1f : 4e : 83 : 63 : 85 : 55\n"
    "q :\n"
    "00 : d2 : 05 : e4 : 73 : fb : c1 : 99 : c5 : dc : 68 : a4 : 8d : 92 : 27 :\n"
    "3d : e2 : 52 : 5f : 89 : 8b\n"
    "g :\n"
    "00 : aa : 21 : 02 : 09:43:6e : fb : a2 : 54 : 14 : 85 : 0a : f4 : 28 :\n"
    "7c : cb : cc : db : f5 : 1e : a2 : 18 : a9 : 21 : de : 88 : 88 : 33 : 8c :\n"
    "2e : eb : 8d : a3 : f0 : 1d : c8 : 8f : f6 : 7e : f8 : cf : 12 : f5 : b4 :\n"
    "a1 : 11 : 6f : 0c : d4 : f0 : 06 : ad : c4 : fc : 14 : 45 : c7 : 94 : 15 :\n"
    "bc : 19 : 4b : ae : ef : 93 : 6a : 4f : cc : 14 : d8 : 47 : 8b : 39 : 66 :\n"
    "87 : 02 : d4 : 28 : 0a : b8 : ee : 09:37:f4:00 : a0 : 04 : a7 : 79 :\n"
    "a7 : d2 : 3c : f7 : 34 : 43 : 56 : 8e : d0 : 7c : c2 : d8 : 4d : 0f : 89 :\n"
    "ed : 14 : c1 : 2c : 9c : 4c : 19 : 9b : 9e : dc : 53 : 09:9f:df:2d :\n"
    "f0 : 0c : 27 : 54 : 3a : 77 : 14 : 2d : de"
    

};

Share

Re: [Solved] DSA wolfssl

Hi Sam,

Once you have a DSA key in PEM format, you can convert it to DER format using the OpenSSL command line utility:

openssl dsa -inform PEM -in dsa2048.pem -outform DER -out dsa2048.der

You could then use the gencertbuf.pl script we have in the root wolfSSL directory to convert the .der file to a C-style array.  You will need to modify the fileList_1024[] or fileList_2048[] array in gencertbuf.pl to add in your .der file, then run the script.  It will place a C array by the name specific in the file <wolfssl_root>/wolfssl/certs_test.h.

Best Regards,
Chris

Re: [Solved] DSA wolfssl

Hi Chrisc
Thank you very much for your answer.
It works fine!
Good job!

Share