# Struct ring::aead::chacha20_poly1305_openssh::OpeningKey [−] [src]

    pub struct OpeningKey { /* fields omitted */ }

A key for opening packets.

## Methods

### `impl OpeningKey`
[src]

#### `fn new(key_material: &[u8; 64]) -> OpeningKey`

Constructs a new `OpeningKey`.

#### `fn decrypt_packet_length(
&self,
sequence_number: u32,
encrypted_packet_length: [u8; 4]
) -> [u8; 4]`

Returns the decrypted, but unauthenticated, packet length.

Importantly, the result won't be authenticated until `open_in_place` is called.

#### `fn open_in_place<'a>(
&self,
sequence_number: u32,
ciphertext_in_plaintext_out: &'a mut [u8],
tag: &[u8; 16]
) -> Result<&'a [u8], Unspecified>`

Opens (authenticates and decrypts) a packet.

`ciphertext_in_plaintext_out` must be of the form `encrypted_packet_length||ciphertext` where `ciphertext` is the encrypted `plaintext`. When the function succeeds the ciphertext is replaced by the plaintext and the result is `Ok(plaintext)`, where `plaintext` is `&ciphertext_in_plaintext_out[PACKET_LENGTH_LEN..]`; otherwise the contents of `ciphertext_in_plaintext_out` are unspecified and must not be used.

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)