> Aztec.nr API reference, v6.0.0 (mainnet and testnet). Index: https://docs.aztec.network/aztec-nr-api/v6.0.0/llms.txt

# Struct KeyValidationRequest

Module: `noir_aztec::protocol::abis::validation_requests::key_validation_request`

```rust
pub struct KeyValidationRequest {
    pub pk_m_hash: Field,
    pub sk_app: Field,
}
```

A request from an app circuit to the kernel for validation of a siloed app secret key.

The master public key is exposed only as its [`hash_public_key`](/aztec-nr-api/v6.0.0/protocol_types/public_keys/fn.hash_public_key.md) digest -- apps must not see the raw point. The kernel reset circuit derives the point from the master secret key hint, hashes it, and asserts equality with `pk_m_hash`.

## Fields

```rust
pk_m_hash: Field
```

```rust
sk_app: Field
```

## Trait implementations

```rust
impl Deserialize for KeyValidationRequest
```

```rust
pub fn deserialize(fields: [Field; 2]) -> Self
```

```rust
pub fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self
```

```rust
impl Empty for KeyValidationRequest
```

```rust
pub fn empty() -> Self
```

```rust
pub fn is_empty(self: Self) -> bool
where
    Self: Eq
```

```rust
pub fn assert_empty<let S: u32>(self: Self, msg: str<S>)
where
    Self: Eq
```

```rust
impl Eq for KeyValidationRequest
```

```rust
pub fn eq(_self: Self, _other: Self) -> bool
```

```rust
impl Serialize for KeyValidationRequest
```

```rust
pub fn serialize(self) -> [Field; 2]
```

```rust
pub fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>)
```
