/vendor/bundle/jruby/2.1/gems/rbnacl-3.0.1/lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb
https://github.com/delowong/logstash · Ruby · 53 lines · 19 code · 8 blank · 26 comment · 0 complexity · 59692448012259d6059a628d3986506f MD5 · raw file
- # 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