Stiamo provando a realizzare un'applicazione che sfrutti il funzionamento di DialogFlow, un servizio di Google, componendo richieste REST e gestendo le risposte.
Per accedere alle API di Google è necessaria un'autenticazione tramite OAuth2.0, per la quale esiste una procedura per comporre la richiesta del token da utilizzare per autenticare le successive chiamate.
Uno dei passaggi consiste nel "firmare" le strutture realizzate fino a quel punto tramite l'algoritmo "SHA256withRSA", che dovrebbe prima calcolare un hash tramite SHA256 e poi cifrarlo tramite RSA (con una chiave privata fornita dalla Console di Google).
Provando la sequenza di operazioni tramite le funzioni di INDE (Crypt.computeHash e Crypt.publicEncrypt, che appunto utilizzano gli stessi algoritmi richesti dalla procedura) si ottiene l'errore "invalid_grant - Invalid JWT Signature", dovuto alla realizzazione sbagliata della "firma".
Lo stesso procedimento ha invece successo utilizzando un WS esterno in php, dove le apposite funzioni permettono di calcolare la "firma" in modo corretto.
Confrontando però le due codifiche abbiamo notato che l'hash di Crypt.computeHash e quello prodotto in php sono differenti (nonostante entrambi generati a partire dallo stesso testo in chiaro attraverso SHA256).
C'è una maniera di "modificare" il procedimento del calcolo dell'hash per ottenere un risultato funzionante?
Grazie