How to resolve this: invalid conversion from 'const char*' to 'const uint8_t*

32,143

The initHmac function signature is:

void initHmac(const uint8_t* secret, int secretLength);

But you use const char* for secret.

Solution

Try to cast the secret variable to const uint8_t* (or const unsigned char*):

Sha256.initHmac((const uint8_t*)"hash key",8);

UPDATE

To solve your new compilation error, just add const in front of all declarations containing PROGMEM in the library sources. For insance:

In Sha/sha1.cpp (line 11)

const uint8_t sha1InitState[] PROGMEM = {

In Sha/sha256.cpp (line 6)

const uint32_t sha256K[] PROGMEM = {

In Sha/sha256.cpp (line 11):

const uint8_t sha256InitState[] PROGMEM = {
Share:
32,143
user2192774
Author by

user2192774

Updated on January 17, 2020

Comments

  • user2192774
    user2192774 over 4 years

    I installed this SHA library: https://github.com/Cathedrow/Cryptosuite. I want to implement HMAC256 using Arduino IDE 1.6.7 installed on Win. 10 and the controller is ATMEGA328.

    I copied the example given in their webpage. I am still new and want to test and try. I wrote this code in Arduino IDE.

    #include "sha256.h"
    
    void setup() {
        // put your setup code here, to run once:
        uint8_t *hash;
        //static const char hash[450]={};
        //const char *hash; hash={};
        Sha256.initHmac("hash key",8); // key, and length of key in bytes
        Sha256.print("This is a message to hash");
        hash = Sha256.resultHmac();
        //Serial.print(hash,HEX);
    }
    
    void loop() {
        // put your main code here, to run repeatedly:
    }
    

    I got this error:

    invalid conversion from 'const char*' to 'const uint8_t* {aka const unsigned char*}' [-fpermissive]

    I do not know why this happens. The example is primitive taken as is from the library site. Can you help?

    EDIT: I tried to change the line from:

    Sha256.initHmac((const uint8_t*)"hash key",8);
    

    to:

    Sha256.initHmac((const uint8_t*)"hash key",8);
    

    But again, the compilation fails. It says:

    Arduino: 1.6.7 (Windows 10), Board: "Arduino/Genuino Uno"

    In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/arduino.h:28:0,

                 from C:\Users\e\Documents\Arduino\libraries\Sha\sha1_config.h:13,
    
                 from C:\Users\e\Documents\Arduino\libraries\Sha\sha1.h:4,
    
                 from C:\Users\e\Documents\Arduino\libraries\Sha\sha1.cpp:1:
    

    C:\Users\e\Documents\Arduino\libraries\Sha\sha1.cpp:8:25: error: variable 'sha1InitState' must be const in order to be put into read-only section by means of 'attribute((progmem))'

    uint8_t sha1InitState[] PROGMEM = {

                         ^
    

    exit status 1 Error compiling.

    This report would have more information with "Show verbose output during compilation" enabled in File > Preferences.

  • user2192774
    user2192774 over 8 years
    Thanks. But did not solve the problem. See the post edited.
  • jyvet
    jyvet over 8 years
    See update (this is another issue which is not associated with your initial error)