Crypto

package
v0.0.0-...-ae8aae0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 30, 2025 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package Crypto provides methods for working with Crypto object instances.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Advanced

type Advanced = class

Advanced exposes a 1:1 low-level instance of the class, undocumented, for those who know what they are doing.

type Any

type Any interface {
	gd.IsClass
	AsCrypto() Instance
}

type Instance

type Instance [1]gdclass.Crypto

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 [X509Certificate]s. [codeblocks] [gdscript] var crypto = Crypto.new()

# Generate new RSA key. var key = crypto.generate_rsa(4096)

# Generate new self-signed certificate with the given key. var cert = crypto.generate_self_signed_certificate(key, "CN=mydomain.com,O=My Game Company,C=IT")

# Save key and certificate in the user folder. key.save("user://generated.key") cert.save("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(verified) assert(data.to_utf8_buffer() == decrypted) [/gdscript] [csharp] using Godot; using System.Diagnostics;

Crypto crypto = new Crypto();

// Generate new RSA key. CryptoKey key = crypto.GenerateRsa(4096);

// Generate new self-signed certificate with the given key. X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT");

// Save key and certificate in the user folder. key.Save("user://generated.key"); cert.Save("user://generated.crt");

// Encryption string data = "Some data"; byte[] encrypted = crypto.Encrypt(key, data.ToUtf8Buffer());

// Decryption byte[] decrypted = crypto.Decrypt(key, encrypted);

// Signing byte[] signature = crypto.Sign(HashingContext.HashType.Sha256, Data.Sha256Buffer(), key);

// Verifying bool verified = crypto.Verify(HashingContext.HashType.Sha256, Data.Sha256Buffer(), signature, key);

// Checks Debug.Assert(verified); Debug.Assert(data.ToUtf8Buffer() == decrypted); [/csharp] [/codeblocks]

var Nil Instance

Nil is a nil/null instance of the class. Equivalent to the zero value.

func New

func New() Instance

func (Instance) AsCrypto

func (self Instance) AsCrypto() Instance

func (Instance) AsObject

func (self Instance) AsObject() [1]gd.Object

func (Instance) AsRefCounted

func (self Instance) AsRefCounted() [1]gd.RefCounted

func (Instance) ConstantTimeCompare

func (self Instance) ConstantTimeCompare(trusted []byte, received []byte) bool

Compares two [PackedByteArray]s for equality without leaking timing information in order to prevent timing attacks. See [url=https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy]this blog post[/url] for more information.

func (Instance) Decrypt

func (self Instance) Decrypt(key [1]gdclass.CryptoKey, ciphertext []byte) []byte

Decrypt the given [param ciphertext] with the provided private [param key]. [b]Note:[/b] The maximum size of accepted ciphertext is limited by the key size.

func (Instance) Encrypt

func (self Instance) Encrypt(key [1]gdclass.CryptoKey, plaintext []byte) []byte

Encrypt the given [param plaintext] with the provided public [param key]. [b]Note:[/b] The maximum size of accepted plaintext is limited by the key size.

func (Instance) GenerateRandomBytes

func (self Instance) GenerateRandomBytes(size int) []byte

Generates a [PackedByteArray] of cryptographically secure random bytes with given [param size].

func (Instance) GenerateRsa

func (self Instance) GenerateRsa(size int) [1]gdclass.CryptoKey

Generates an RSA [CryptoKey] that can be used for creating self-signed certificates and passed to [method StreamPeerTLS.accept_stream].

func (Instance) GenerateSelfSignedCertificate

func (self Instance) GenerateSelfSignedCertificate(key [1]gdclass.CryptoKey) [1]gdclass.X509Certificate

Generates a self-signed [X509Certificate] from the given [CryptoKey] and [param issuer_name]. The certificate validity will be defined by [param not_before] and [param not_after] (first valid date and last valid date). The [param issuer_name] must contain at least "CN=" (common name, i.e. the domain name), "O=" (organization, i.e. your company name), "C=" (country, i.e. 2 lettered ISO-3166 code of the country the organization is based in). A small example to generate an RSA key and an X509 self-signed certificate. [codeblocks] [gdscript] var crypto = Crypto.new() # Generate 4096 bits RSA key. var key = crypto.generate_rsa(4096) # Generate self-signed certificate using the given key. var cert = crypto.generate_self_signed_certificate(key, "CN=example.com,O=A Game Company,C=IT") [/gdscript] [csharp] var crypto = new Crypto(); // Generate 4096 bits RSA key. CryptoKey key = crypto.GenerateRsa(4096); // Generate self-signed certificate using the given key. X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT"); [/csharp] [/codeblocks]

func (Instance) HmacDigest

func (self Instance) HmacDigest(hash_type gdclass.HashingContextHashType, key []byte, msg []byte) []byte

Generates an [url=https://en.wikipedia.org/wiki/HMAC]HMAC[/url] digest of [param msg] using [param key]. The [param hash_type] parameter is the hashing algorithm that is used for the inner and outer hashes. Currently, only [constant HashingContext.HASH_SHA256] and [constant HashingContext.HASH_SHA1] are supported.

func (Instance) Sign

func (self Instance) Sign(hash_type gdclass.HashingContextHashType, hash []byte, key [1]gdclass.CryptoKey) []byte

Sign a given [param hash] of type [param hash_type] with the provided private [param key].

func (*Instance) UnsafePointer

func (self *Instance) UnsafePointer() unsafe.Pointer

func (Instance) Verify

func (self Instance) Verify(hash_type gdclass.HashingContextHashType, hash []byte, signature []byte, key [1]gdclass.CryptoKey) bool

Verify that a given [param signature] for [param hash] of type [param hash_type] against the provided public [param key].

func (Instance) Virtual

func (self Instance) Virtual(name string) reflect.Value

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL