class AndroidKeyAttestation::AuthorizationList

Constants

ACTIVE_DATE_TIME_TAG
ALGORITHM_TAG
ALLOW_WHILE_ON_BODY_TAG
ALL_APPLICATIONS_TAG
APPLICATION_ID_TAG
ATTESTATION_APPLICATION_ID_TAG
ATTESTATION_ID_BRAND_TAG
ATTESTATION_ID_DEVICE_TAG
ATTESTATION_ID_IMEI_TAG
ATTESTATION_ID_MANUFACTURER_TAG
ATTESTATION_ID_MEID_TAG
ATTESTATION_ID_MODEL_TAG
ATTESTATION_ID_PRODUCT_TAG
ATTESTATION_ID_SERIAL_TAG
AUTH_TIMEOUT_TAG
BOOT_PATCH_LEVEL_TAG
CREATION_DATE_TIME_TAG
DIGEST_TAG
EC_CURVE_TAG
KEY_SIZE_TAG
NO_AUTH_REQUIRED_TAG
ORIGINATION_EXPIRE_DATE_TIME_TAG
ORIGIN_ENUM
ORIGIN_TAG
OS_PATCH_LEVEL_TAG
OS_VERSION_TAG
PADDING_TAG
PURPOSE_ENUM

source.android.com/security/keystore/tags

PURPOSE_TAG

source.android.com/security/keystore/attestation#attestation-extension

ROLLBACK_RESISTANCE_TAG
ROOT_OF_TRUST_TAG
RSA_PUBLIC_EXPONENT_TAG
TRUSTED_CONFIRMATION_REQUIRED_TAG
TRUSTED_USER_PRESENCE_REQUIRED_TAG
UNLOCK_DEVICE_REQUIRED_TAG
USAGE_EXPIRE_DATE_TIME_TAG
USER_AUTH_TYPE_TAG
VENDOR_PATCH_LEVEL_TAG

Attributes

sequence[R]

Public Class Methods

new(sequence) click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 59
def initialize(sequence)
  @sequence = sequence
end

Public Instance Methods

all_applications() click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 68
def all_applications
  find_boolean(ALL_APPLICATIONS_TAG)
end
creation_date() click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 72
def creation_date
  find_time_milliseconds(CREATION_DATE_TIME_TAG)
end
find_by_tag(tag) click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 81
def find_by_tag(tag)
  sequence.detect { |data| data.tag == tag }
end
origin() click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 76
def origin
  integer = find_optional_integer(ORIGIN_TAG)
  ORIGIN_ENUM.fetch(integer) if integer
end
purpose() click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 63
def purpose
  integers = find_optional_integer_set(PURPOSE_TAG)
  integers&.map { |i| PURPOSE_ENUM.fetch(i) }
end

Private Instance Methods

find_boolean(tag) click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 98
def find_boolean(tag)
  find_by_tag(tag)&.value || false
end
find_optional_integer(tag) click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 94
def find_optional_integer(tag)
  find_by_tag(tag)&.value&.at(0)&.value&.to_i
end
find_optional_integer_set(tag) click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 89
def find_optional_integer_set(tag)
  value = find_by_tag(tag)&.value&.at(0)&.value
  value&.map { |asn1_int| asn1_int.value.to_i }
end
find_time_milliseconds(tag) click to toggle source
# File lib/android_key_attestation/authorization_list.rb, line 102
def find_time_milliseconds(tag)
  value = find_by_tag(tag)&.value&.at(0)&.value
  Time.at(value.to_i / 1000) if value
end