Botan  1.11.15
Public Member Functions
Botan::TLS::Datagram_Sequence_Numbers Class Reference

#include <tls_seq_numbers.h>

Inheritance diagram for Botan::TLS::Datagram_Sequence_Numbers:
Botan::TLS::Connection_Sequence_Numbers

List of all members.

Public Member Functions

bool already_seen (u64bit sequence) const override
u16bit current_read_epoch () const override
u16bit current_write_epoch () const override
 Datagram_Sequence_Numbers ()
void new_read_cipher_state () override
void new_write_cipher_state () override
u64bit next_read_sequence () override
u64bit next_write_sequence (u16bit epoch) override
void read_accept (u64bit sequence) override

Detailed Description

Definition at line 55 of file tls_seq_numbers.h.


Constructor & Destructor Documentation

Definition at line 58 of file tls_seq_numbers.h.

{ m_write_seqs[0] = 0; }

Member Function Documentation

bool Botan::TLS::Datagram_Sequence_Numbers::already_seen ( u64bit  sequence) const [inline, override, virtual]

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 83 of file tls_seq_numbers.h.

         {
         const size_t window_size = sizeof(m_window_bits) * 8;

         if(sequence > m_window_highest)
            return false;

         const u64bit offset = m_window_highest - sequence;

         if(offset >= window_size)
            return true; // really old?

         return (((m_window_bits >> offset) & 1) == 1);
         }

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 68 of file tls_seq_numbers.h.

{ return m_read_epoch; }

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 69 of file tls_seq_numbers.h.

{ return m_write_epoch; }

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 60 of file tls_seq_numbers.h.

{ m_read_epoch += 1; }

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 62 of file tls_seq_numbers.h.

         {
         m_write_epoch += 1;
         m_write_seqs[m_write_epoch] = 0;
         }

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 78 of file tls_seq_numbers.h.

         {
         throw std::runtime_error("DTLS uses explicit sequence numbers");
         }

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 71 of file tls_seq_numbers.h.

References BOTAN_ASSERT.

         {
         auto i = m_write_seqs.find(epoch);
         BOTAN_ASSERT(i != m_write_seqs.end(), "Found epoch");
         return (static_cast<u64bit>(epoch) << 48) | i->second++;
         }
void Botan::TLS::Datagram_Sequence_Numbers::read_accept ( u64bit  sequence) [inline, override, virtual]

Implements Botan::TLS::Connection_Sequence_Numbers.

Definition at line 98 of file tls_seq_numbers.h.

         {
         const size_t window_size = sizeof(m_window_bits) * 8;

         if(sequence > m_window_highest)
            {
            const size_t offset = sequence - m_window_highest;
            m_window_highest += offset;

            if(offset >= window_size)
               m_window_bits = 0;
            else
               m_window_bits <<= offset;

            m_window_bits |= 0x01;
            }
         else
            {
            const u64bit offset = m_window_highest - sequence;
            m_window_bits |= (static_cast<u64bit>(1) << offset);
            }
         }

The documentation for this class was generated from the following file: