plinth/browser/crypto/subtle
Types
pub type DigestAlgorithm {
SHA1
SHA256
SHA384
SHA512
}
Constructors
-
SHA1 -
SHA256 -
SHA384 -
SHA512
pub type ImportAlgorithm {
RsaHashedImportParams(name: String, hash: DigestAlgorithm)
EcKeyImportParams(name: String, named_curve: NamedCurve)
HmacImportParams(hash: DigestAlgorithm)
OtherImportParams(name: String)
}
Constructors
-
RsaHashedImportParams(name: String, hash: DigestAlgorithm) -
EcKeyImportParams(name: String, named_curve: NamedCurve) -
HmacImportParams(hash: DigestAlgorithm) -
OtherImportParams(name: String)
pub type KeyUsage {
Encrypt
Decrypt
Sign
Verify
DeriveKey
DeriveBits
WrapKey
UnwrapKey
}
Constructors
-
Encrypt -
Decrypt -
Sign -
Verify -
DeriveKey -
DeriveBits -
WrapKey -
UnwrapKey
pub type NamedCurve {
P256
P384
P521
}
Constructors
-
P256 -
P384 -
P521
pub type PublicKeyAlgorithm {
RsaHashedKeyGenParams(
name: String,
modulus_length: Int,
public_exponent: BitArray,
hash: DigestAlgorithm,
)
EcKeyGenParams(name: String, named_curve: String)
Ed25519GenParams
}
Constructors
-
RsaHashedKeyGenParams( name: String, modulus_length: Int, public_exponent: BitArray, hash: DigestAlgorithm, ) -
EcKeyGenParams(name: String, named_curve: String) -
Ed25519GenParams
pub type SignAlgorithm {
RsaSsaPkcs1v15
RsaPssParams(salt_length: Int)
EcdsaParams(hash: DigestAlgorithm)
Hmac
Ed25519
}
Constructors
-
RsaSsaPkcs1v15 -
RsaPssParams(salt_length: Int) -
EcdsaParams(hash: DigestAlgorithm) -
Hmac -
Ed25519
Values
pub fn digest(
algorithm: DigestAlgorithm,
data: BitArray,
) -> promise.Promise(Result(BitArray, String))
pub fn digest_algorithm_to_string(
algorithm: DigestAlgorithm,
) -> String
pub fn export(
key: CryptoKey,
format: Format,
) -> promise.Promise(Result(BitArray, String))
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey
pub fn export_jwk(
key: CryptoKey,
) -> promise.Promise(Result(json.Json, String))
export Jwk is separate because it returns JSON, other formats return array buffer
pub fn generate_key(
algorithm: PublicKeyAlgorithm,
extractable: Bool,
key_usages: List(KeyUsage),
) -> promise.Promise(Result(#(CryptoKey, CryptoKey), String))
pub fn import_jwk(
key_data: json.Json,
algorithm: ImportAlgorithm,
extractable: Bool,
key_usages: List(KeyUsage),
) -> promise.Promise(Result(CryptoKey, String))
pub fn import_key(
format: String,
key_data: BitArray,
algorithm: ImportAlgorithm,
extractable: Bool,
key_usages: List(KeyUsage),
) -> promise.Promise(Result(CryptoKey, String))
pub fn sign(
algorithm: SignAlgorithm,
key: CryptoKey,
data: BitArray,
) -> promise.Promise(Result(BitArray, String))
pub fn verify(
algorithm: SignAlgorithm,
key: CryptoKey,
signature: BitArray,
data: BitArray,
) -> promise.Promise(Result(Bool, String))