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
Наследует: RefCounted < Object
Используется для создания HMAC для сообщения с использованием ключа.
Описание
Класс HMACContext полезен для расширенных вариантов использования HMAC, таких как потоковая передача сообщений, поскольку он поддерживает создание сообщений с течением времени, а не предоставляет их все сразу.
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());
}
}
Методы
finish() |
|
start(hash_type: HashType, key: PackedByteArray) |
|
update(data: PackedByteArray) |
Описания метода
PackedByteArray finish() 🔗
Возвращает полученный HMAC. Если HMAC не удалось, возвращается пустой PackedByteArray.
Error start(hash_type: HashType, key: PackedByteArray) 🔗
Инициализирует HMACContext. Этот метод не может быть вызван снова для того же HMACContext, пока не будет вызван finish().
Error update(data: PackedByteArray) 🔗
Обновляет сообщение, чтобы оно было HMACed. Это может быть вызвано несколько раз до вызова finish() для добавления data к сообщению, но не может быть вызвано до вызова start().