Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
HMACContext
Eredita: RefCounted < Object
Utilizzato per creare un HMAC per un messaggio tramite una chiave.
Descrizione
La classe HMACContext è utile per casi d'uso HMAC avanzati, come lo streaming del messaggio, poiché supporta la creazione del messaggio nel corso del tempo anziché fornirlo tutto in una volta.
extends Node
var ctx = HMACContext.new()
func _ready():
var key = "supersecret".to_utf8_buffer()
var err = ctx.start(HashingContext.HASH_SHA256, key)
assert(err == OK)
var msg1 = "this is ".to_utf8_buffer()
var msg2 = "super duper secret".to_utf8_buffer()
err = ctx.update(msg1)
assert(err == OK)
err = ctx.update(msg2)
assert(err == OK)
var hmac = ctx.finish()
print(hmac.hex_encode())
using Godot;
using System.Diagnostics;
public partial class MyNode : Node
{
private HmacContext _ctx = new HmacContext();
public override void _Ready()
{
byte[] key = "supersecret".ToUtf8Buffer();
Error err = _ctx.Start(HashingContext.HashType.Sha256, key);
Debug.Assert(err == Error.Ok);
byte[] msg1 = "this is ".ToUtf8Buffer();
byte[] msg2 = "super duper secret".ToUtf8Buffer();
err = _ctx.Update(msg1);
Debug.Assert(err == Error.Ok);
err = _ctx.Update(msg2);
Debug.Assert(err == Error.Ok);
byte[] hmac = _ctx.Finish();
GD.Print(hmac.HexEncode());
}
}
Metodi
finish() |
|
start(hash_type: HashType, key: PackedByteArray) |
|
update(data: PackedByteArray) |
Descrizioni dei metodi
PackedByteArray finish() 🔗
Restituisce l'HMAC risultante. Se l'HMAC fallisce, viene restituito un PackedByteArray vuoto.
Error start(hash_type: HashType, key: PackedByteArray) 🔗
Inizializza HMACContext. Questo metodo non può essere chiamato di nuovo sullo stesso HMACContext finché finish() non è stato chiamato.
Error update(data: PackedByteArray) 🔗
Aggiorna il messaggio da sottoporre a HMAC. Può essere chiamato più volte prima che sia chiamato finish() per aggiungere data al messaggio, ma non può essere chiamato finché start() non è chiamato.