Sha256: 9c415d56349028b912312a211584ae0d2591458d76bab1e4713f4bcd706b3c29

Contents?: true

Size: 1.4 KB

Versions: 7

Compression:

Stored size: 1.4 KB

Contents

# encoding: binary

module RbNaCl
  # 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 Boxes::Curve25519XSalsa20Poly1305::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

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rbnacl-3.1.2 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-3.1.1 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-3.1.0 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-3.0.1 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-3.0.0 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-2.0.0 lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
rbnacl-2.0.0.pre lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb