Module 0x1::federated_keyless
This module implements the Federated Keyless authentication scheme.
- Struct
PublicKey - Constants
- Function
new_public_key_from_bytes - Function
deserialize_public_key - Function
new - Function
get_jwk_address - Function
get_keyless_public_key - Specification
use 0x1::bcs_stream;
use 0x1::error;
use 0x1::keyless;
Struct PublicKey
An unvalidated any public key: not necessarily an elliptic curve point, just a sequence of 32 bytes
struct PublicKey has copy, drop, store
Fields
-
jwk_address: address -
keyless_public_key: keyless::PublicKey
Constants
There are extra bytes in the input when deserializing a Federated Keyless public key.
const E_INVALID_FEDERATED_KEYLESS_PUBLIC_KEY_EXTRA_BYTES: u64 = 1;
Function new_public_key_from_bytes
Parses the input bytes into a keyless public key.
public fun new_public_key_from_bytes(bytes: vector<u8>): federated_keyless::PublicKey
Implementation
public fun new_public_key_from_bytes(bytes: vector<u8>): PublicKey {
let stream = bcs_stream::new(bytes);
let pk = deserialize_public_key(&mut stream);
assert!(!bcs_stream::has_remaining(&mut stream), error::invalid_argument(E_INVALID_FEDERATED_KEYLESS_PUBLIC_KEY_EXTRA_BYTES));
pk
}
Function deserialize_public_key
Deserializes a Federated Keyless public key from a BCS stream.
public fun deserialize_public_key(stream: &mut bcs_stream::BCSStream): federated_keyless::PublicKey
Implementation
public fun deserialize_public_key(stream: &mut bcs_stream::BCSStream): PublicKey {
let jwk_address = bcs_stream::deserialize_address(stream);
let keyless_public_key = keyless::deserialize_public_key(stream);
PublicKey { keyless_public_key, jwk_address }
}
Function new
Creates a new Federated Keyless public key from a keyless public key and a JWK address.
public fun new(keyless_public_key: keyless::PublicKey, jwk_address: address): federated_keyless::PublicKey
Implementation
public fun new(keyless_public_key: keyless::PublicKey, jwk_address: address): PublicKey {
PublicKey { keyless_public_key, jwk_address }
}
Function get_jwk_address
Returns the identifier bytes of the public key
public(friend) fun get_jwk_address(self: &federated_keyless::PublicKey): address
Implementation
friend fun get_jwk_address(self: &PublicKey): address {
self.jwk_address
}
Function get_keyless_public_key
Returns the keyless public key of the public key
public(friend) fun get_keyless_public_key(self: &federated_keyless::PublicKey): keyless::PublicKey
Implementation
friend fun get_keyless_public_key(self: &PublicKey): keyless::PublicKey {
self.keyless_public_key
}
Specification
pragma verify = false;