class WebAuthn::AttestationStatement::FidoU2f::PublicKey
def self.uncompressed_point?(data)
def self.uncompressed_point?(data) data.size && data.length == UNCOMPRESSED_FORM_INDICATOR.length + COORDINATE_LENGTH * 2 && data[0] == UNCOMPRESSED_FORM_INDICATOR end
def cose_key
def cose_key @cose_key ||= COSE::Key::EC2.deserialize(data) end
def initialize(data)
def initialize(data) @data = data end
def to_uncompressed_point
def to_uncompressed_point UNCOMPRESSED_FORM_INDICATOR + cose_key.x + cose_key.y end
def valid?
def valid? data.size >= COORDINATE_LENGTH * 2 && cose_key.x.length == COORDINATE_LENGTH && cose_key.y.length == COORDINATE_LENGTH && cose_key.alg == COSE::Algorithm.by_name("ES256").id end