buongiorno a tutti ragazzi,
spero questo sia il forum giusto.
è da diverso tempo che sono iscritto ma forse non ho mai postato, essendomi dedicato finora più che altro all'aspetto finanziario della trattazione del btc.
è pertanto per me un certo sollievo ritrovare questa pagina e scoprire che è piena di discussioni tecniche, quindi mi fa ben sperare.
(tra l'altro devo aver visto un video su YT, una conferenza all'università di Venezia dove interveniva anche un ragazzo che si presentava come moderatore di questa sezione, mi ha fatto una buona impressione)
Spiego la mia necessità.
Sto costruendo un banale portfoglio in google sheets con js per avere sempre sotto controllo tutti gli assets.
Nel desiderio di renderlo automatico vorrei implementare il collegamento ai vari account attraverso le API (non so se dice gli api ma a me piace proprio dire le api), cominciando da BitStamp appunto.
Un banale collegamento per il feed del prezzo in tempo reale sono già riuscito a farlo, avendo acquisito in questi giorni i rudimenti di js necessari a un primo utilizzo, ma davanti alla connessione api mi sono fermato, essendoci molte cose che non mi sono proprio chiare.
E dal momento che credo siano più che altro dubbi legati a una mancanza di esperienza (e conoscenza) nel campo ho pensato che fosse meglio chiedere indicazioni e spiegazioni.
Se volete andare avanti nella lettura linko quindi la pagina e procedo con l'esposizione:
https://www.bitstamp.net/api/1.
Autenticazione in 2 passaggi o in 1?prima domanda. Come vedete al paragrafo "API authentication" si legge:
All private API calls require authentication. For a successful authentication you need to provide your API key, a signature and a nonce parameter.
Passa poi a elencare e descrivere brevemente i parametri indicati; se non che più in basso aggiunge:
Signature is a HMAC-SHA256 encoded message containing nonce, customer ID and API key
Chiederò dopo info specifiche sulla signature, quindi in questo momento il mio dubbio non è sapere cosa sono questi elementi, il mio dubbio è un altro: questi elementi, questi dati,
vanno forniti una volta sola, cioè concatenati insieme e digeriti sottoforma di stringa criptata,
oppure vanno inviati
due volte, e cioè la prima volta come dati in chiaro e una seconda volta come stringa criptata??
Spero che la domanda sia chiara e ve la rappresento qui sotto con uno schemino:
![](https://ip.bitcointalk.org/?u=https%3A%2F%2Fimgur.com%2FvTH5euS&t=665&c=B9dCMgwkvs7j6g)
il buon senso mi fa pensare che vanno mandati una sola volta, e cioè tutti concatenati insieme e elaborati come stringa criptata secondo i loro requisiti, altrimenti non avrebbe senso prendere tutte queste precauzioni in termini di sicurezza.
Questo mi porta allora alla mia seconda domanda, che riguarda il nonce
2.Se il nonce cambia sempre a ogni connessione, come fanno loro a avere un termine di paragone?Anche qui mi spiego:
ammettiamo che voi andate in un club super segreto, dove per entrare è richiesta la password. La password deve essere composta da una stringa nella quale sono concatenate le seguenti informazioni :
- il vostro numero di tessera;
- il vostro nickname;
- la data del giorno corrente espressa secondo gg/mm/aa
tutto questo sommato insieme e digerito secondo la formattazione xy-256 ecc ecc
message = tessera.ID + nickname + date()
funzione digerisci()
message secondo il protocollo xy-256
all'ingresso ricevono il messaggio, lo decodificano e dicono "accidenti è proprio lui, facciamolo entrare".
E fino a qui tutto ok, ci arrivo anche io a capirlo.
Ma se il club ti dicesse: "Guarda per entrare la password deve essere una stringa criptata composta da queste informazioni concatenate:"
- il tuo numero di tessera;
- il tuo nickname;
- un numero a piacere che deve essere sempre diverso a ogni richiesta, compreso tra 1 e mille miliardi di milioni
la mia domanda è: loro come fanno a avere un riscontro su questo ultimo valore??
Perché se non ho capito male in nonce è in fondo un valore arbitrario, che tu puoi impostare in maniera più o meno arbitraria..
O forse il nonce è un limite di tempo che tu dai al tuo tentativo di connessione in modo da impedire un tentativo di ripetizione da parte di altri? Allora in questo caso vorrebbe dire che il server ricevente è cmq in grado di spacchettare il tutto e suddividere le informazioni di accesso dal nonce .. per favore fatemi capire se potete.
terza domanda (entrando un po' più nel tecnico)
3. Qual' è una libreria valida per generare un codice universalmente accettato?Seguendo
queste indicazioni su Stackoverflow ho trovato questa libreria elaborata da un gruppo dell'università di Stanford e ho implementato anche io nel mio piccolo il codice:
a questo punto però un po' di sana suspance .. se c'è qualcuno che mi segue e ha desiderio di rispondermi fatemi sapere che continuo a scrivere la seconda parte.
a dopo grazie