Sha256: 08989680213fc2010e41d274325d6d6b51dd10f6e89ec78bd4957f8bc0b44f9b

Contents?: true

Size: 1.59 KB

Versions: 3

Compression:

Stored size: 1.59 KB

Contents

# encoding: binary

module RbNaCl
  module Boxes
    class Curve25519XSalsa20Poly1305
      # RbNaCl::Box public key. Send it (securely!) to your friends.
      #
      # This class stores the NaCL public key, and provides some convenience
      # functions for working with it.
      class PublicKey
        include KeyComparator
        include Serializable

        # The size of the key, in bytes
        BYTES = Boxes::Curve25519XSalsa20Poly1305::PUBLICKEYBYTES

        # Initializes a new PublicKey for key operations.
        #
        # Takes the (optionally encoded) public key bytes.  This can be shared with
        # many people and used to establish key pairs with their private key, for
        # the exchanging of messages using a RbNaCl::Box
        #
        # @param public_key [String] The public key
        #
        # @raise [RbNaCl::LengthError] If the key is not valid after decoding.
        #
        # @return A new PublicKey
        def initialize(public_key)
          @public_key = Util.check_string(public_key, BYTES, "Public key")
        end

        # The raw bytes of the key
        #
        # @return [String] the raw bytes.
        def to_bytes
          @public_key
        end

        # The crypto primitive the PublicKey class is to be used for
        #
        # @return [Symbol] The primitive
        def self.primitive
          :curve25519xsalsa20poly1305
        end

        # The crypto primitive this PublicKey is to be used for.
        #
        # @return [Symbol] The primitive
        def primitive
          self.class.primitive
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rbnacl-3.4.0 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-3.3.0 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-3.2.0 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb