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.


Inherits: RefCounted < Object

Provides access to advanced cryptographic functionalities.


The Crypto class provides access to advanced cryptographic functionalities.

Currently, this includes asymmetric key encryption/decryption, signing/verification, and generating cryptographically secure random bytes, RSA keys, HMAC digests, and self-signed X509Certificates.

extends Node

var crypto =
var key =
var cert =

func _ready():
    # Generate new RSA key.
    key = crypto.generate_rsa(4096)
    # Generate new self-signed certificate with the given key.
    cert = crypto.generate_self_signed_certificate(key, ",O=My Game Company,C=IT")
    # Save key and certificate in the user folder."user://generated.key")"user://generated.crt")
    # Encryption
    var data = "Some data"
    var encrypted = crypto.encrypt(key, data.to_utf8_buffer())
    # Decryption
    var decrypted = crypto.decrypt(key, encrypted)
    # Signing
    var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), key)
    # Verifying
    var verified = crypto.verify(HashingContext.HASH_SHA256, data.sha256_buffer(), signature, key)
    # Checks
    assert(data.to_utf8_buffer() == decrypted)



constant_time_compare(trusted: PackedByteArray, received: PackedByteArray)