The base64 encode formatted output from Arduino HMAC-SHA1 does not match with

I am working on an Arduino UNO project which is required an authorized authentication based on OAuth 1.0 to connects to the cloud. This is alike Authorizing a request to Twitter API, but I am stuck in the step of Creating a signature. The whole process of creating a signature requires algorithms like encodeURL, base64encode, and hmac-sha1. With my Arduino UNO, I use Cryptosuite library for hmac-sha1 and arduino-base64 library for base64encode. Both of them are working fine separately. However, I need to get a base64-formatted output of hmac-sha1. So I have tried this:

#include <avr/pgmspace.h>
#include <sha1.h>
#include <Base64.h>

uint8_t *in, out, i;
char b64[29];
static const char PROGMEM b64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
char key[] = "testKey";
char basestring[] = "testing";


void printHash(uint8_t* hash) {
int i;
for (i=0; i<20; i++) {
Serial.print("0123456789abcdef"[hash[i]>>4]);
Serial.print("0123456789abcdef"[hash[i]&0xf]);
}
Serial.println();
}

void setup() {
Serial.begin(115200);

Serial.print("Result:");
Sha1.initHmac((uint8_t*)key, strlen(key));
Sha1.print(basestring);
printHash(Sha1.resultHmac());
Serial.println();

// encoding
char* input;
input = (char*)(Sha1.resultHmac());
int inputLen = strlen(input);
int encodedLen = base64_enc_len(inputLen);
char encoded[encodedLen];

// note input is consumed in this step: it will be empty afterwards
base64_encode(encoded, input, inputLen); 

Serial.print("base64 result: ");
Serial.println(encoded);

}

void loop() {
}

The output of printHash that I got is 60d41271d43b875b791e2d54c34bf3f018a29763, which is exactly same with the online verification tool.
However, I supposed to get YNQScdQ7h1t5Hi1Uw0vz8Biil2M= for the base64 result. But I got L18B0HicKRhuxmB6SIFpZP+DpHxU which seems wrong. I have tried to write a JAVA program and a python program, which also said that the output of the base64 result should be YNQScdQ7h1t5Hi1Uw0vz8Biil2M=

I also found this post: Issues talking between Arduino SHA1-HMAC and base64 encoding and Python. I have also tried the tidy function it mentioned from Adafruit-Tweet-Receipt. But the result I got from this function is also wrong.

The snippet of the function:

// base64-encode SHA-1 hash output. This is NOT a general-purpose base64
// encoder! It's stripped down for the fixed-length hash -- always 20
// bytes input, always 27 chars output + '='.
for(in = Sha1.resultHmac(), out=0; ; in += 3) { // octets to sextets
b64[out++] = in[0] >> 2;
b64[out++] = ((in[0] & 0x03) << 4) | (in[1] >> 4);
if(out >= 26) break;
b64[out++] = ((in[1] & 0x0f) << 2) | (in[2] >> 6);
b64[out++] = in[2] & 0x3f;
}
b64[out] = (in[1] & 0x0f) << 2;
// Remap sextets to base64 ASCII chars
for(i=0; i<=out; i++) b64[i] = pgm_read_byte(&b64chars[b64[i]]);
b64[i++] = '=';
b64[i++] = 0;

Basically my question is same as this post: Uint8_t to char array
But seems like there's no further discussion about the solution, I repost my question here.
And I also tried to modify the parameter of the base64 encode function from char* to unsigned char*
from
int base64_encode(char *output, char *input, int inputLen);
to
int base64_encode(char *output, unsigned char *input, int inputLen);

However, the encoded output is just same as the wrong result above.

Is there any obvious mistake I've made in here?

Thanks.

For the input format of base64 encoding part, I've also tried this:

  int shaLen = strlen((char*)Sha1.resultHmac());
  // encoding
  char input[shaLen];
  uint8_t* ptr = Sha1.resultHmac();
  int i = 0;
  for( i; i<shaLen; i++, ptr++ )
  {
    input[i] = DESER_INT8((*ptr));
  }
  input[i] = '\0';

by using

int8_t DESER_INT8(uint8_t x)
{
  return ((x >= (1 << 7))
          ? -(UINT8_MAX - x + 1)
          : x);
}

from this post conversion of uint8_t to sint8_t

But the output is still a wrong L18B0HicKRhuxmB6SIFpZP+DpHxU

Any further proper try I can take?
Thanks.

False alarm, I tried to access Sha1.resultHmac() twice. That makes the sha result different.

Hey ,I have same problem,can you show me your code! thanks! Sorry my english is poor.