# Class BSV::Auth::PeerSession <a id="class-BSV-Auth-PeerSession"></a>

**Inherits:** `Object`

Represents the state of an authentication session with a peer.

Sessions are indexed by `session_nonce` (our nonce for the session), which is
the primary key in {SessionManager}. The `peer_identity_key` is a secondary
index used to look up sessions by peer.

**@example Creating a session**
```ruby
session = PeerSession.new(session_nonce: nonce)
session.peer_identity_key = 'abc123...'
session.peer_nonce = 'xyz...'
```

## Attributes
### `certificates_required` [RW] <a id="attribute-i-certificates_required"></a> <a id="certificates_required-instance_method"></a>
- **@return** [Boolean] whether certificates are required from this peer

### `certificates_validated` [RW] <a id="attribute-i-certificates_validated"></a> <a id="certificates_validated-instance_method"></a>
- **@return** [Boolean] whether required certificates have been validated

### `is_authenticated` [RW] <a id="attribute-i-is_authenticated"></a> <a id="is_authenticated-instance_method"></a>
- **@return** [Boolean] whether mutual authentication is complete

### `last_update` [RW] <a id="attribute-i-last_update"></a> <a id="last_update-instance_method"></a>
- **@return** [Integer] Unix timestamp (milliseconds) of last update

### `peer_identity_key` [RW] <a id="attribute-i-peer_identity_key"></a> <a id="peer_identity_key-instance_method"></a>
- **@return** [String, nil] the peer's identity key (public key hex)

### `peer_nonce` [RW] <a id="attribute-i-peer_nonce"></a> <a id="peer_nonce-instance_method"></a>
- **@return** [String, nil] the nonce we received from the peer (base64)

### `session_nonce` [R] <a id="attribute-i-session_nonce"></a> <a id="session_nonce-instance_method"></a>
- **@return** [String] our nonce for this session (base64) — primary key

## Public Instance Methods
### `authenticated?()` <a id="method-i-authenticated-3F"></a> <a id="authenticated?-instance_method"></a>
- **@return** [Boolean]

### `initialize(session_nonce:)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
- **@param** `session_nonce` [String] our nonce for this session (base64)
- **@return** [PeerSession] a new instance of PeerSession
