Module: OPP::Subject

Defined in:
lib/opp/subject.rb

Constant Summary collapse

PREFIX =
"key:sha256:"

Class Method Summary collapse

Class Method Details

.derive(public_key) ⇒ Object



9
10
11
# File 'lib/opp/subject.rb', line 9

def derive(public_key)
  PREFIX + Base64URL.encode(Digest::SHA256.digest(PublicKey.decode(public_key)))
end

.verify!(subject, public_key:) ⇒ Object



13
14
15
16
17
# File 'lib/opp/subject.rb', line 13

def verify!(subject, public_key:)
  return true if subject.is_a?(String) && secure_equal(subject, derive(public_key))

  raise SubjectMismatchError, "subject does not match public key"
end