nitrokey.nk3.secrets_app

Oath Authenticator client

Utilisé par le biais du transport CTAPHID, via la commande personnalisée du fournisseur. Peut également être utilisé directement via CCID.

exception nitrokey.nk3.secrets_app.SecretsAppException

Bases : Exception

SecretsAppException(code : str, context : str)

__init__(code, context)
Paramètres:
  • code (str)

  • context (str)

Type renvoyé:

None

to_id()
Type renvoyé:

SecretsAppExceptionID

to_string()
Type renvoyé:

str

code: str
context: str
exception nitrokey.nk3.secrets_app.SecretsAppHealthCheckException

Bases : Exception

class nitrokey.nk3.secrets_app.Algorithm

Bases : Enum

Sha1 = 1
Sha256 = 2
Sha512 = 3
class nitrokey.nk3.secrets_app.CCIDInstruction

Bases : Enum

Select = 164
class nitrokey.nk3.secrets_app.Instruction

Bases : Enum

Calculate = 162
CalculateAll = 164
ChangePIN = 179
Delete = 2
GetCredential = 181
List = 161
Put = 1
Reset = 4
SendRemaining = 165
SetCode = 3
SetPIN = 180
UpdateCredential = 183
Validate = 163
VerifyCode = 177
VerifyPIN = 178
class nitrokey.nk3.secrets_app.Kind

Bases : Enum

classmethod from_attribute_byte(attribute_byte)
Paramètres:

attribute_byte (bytes)

Type renvoyé:

str

classmethod from_attribute_byte_type(a)
Paramètres:

a (int)

Type renvoyé:

Kind

Hmac = 64
Hotp = 16
HotpReverse = 48
NotSet = 240
Totp = 32
class nitrokey.nk3.secrets_app.ListItem

Bases : object

ListItem(kind : “Kind”, algorithm : “Algorithm”, label : bytes, properties : Nitrokey.nk3.secrets_app.ListItemProperties)

__init__(kind, algorithm, label, properties)
Paramètres:
Type renvoyé:

None

classmethod get_type_name(x)
Paramètres:

x (Any)

Type renvoyé:

str

algorithm: Algorithm
kind: Kind
label: bytes
properties: ListItemProperties
class nitrokey.nk3.secrets_app.ListItemProperties

Bases : object

ListItemProperties(touch_required : bool, secret_encryption : bool, pws_data_exist : bool)

__init__(touch_required, secret_encryption, pws_data_exist)
Paramètres:
  • touch_required (bool)

  • secret_encryption (bool)

  • pws_data_exist (bool)

Type renvoyé:

None

classmethod from_byte(b)
Paramètres:

b (int)

Type renvoyé:

ListItemProperties

pws_data_exist: bool
secret_encryption: bool
touch_required: bool
class nitrokey.nk3.secrets_app.PasswordSafeEntry

Bases : object

PasswordSafeEntry(login : Optional[bytes], password : Facultatif[octets], metadata : Facultatif[octets], propriétés : Optional[bytes] = None, name : Optional[bytes] = None)

__init__(login, password, metadata, properties=None, name=None)
Paramètres:
  • login (bytes | None)

  • password (bytes | None)

  • metadata (bytes | None)

  • properties (bytes | None)

  • name (bytes | None)

Type renvoyé:

None

tlv_encode()
Type renvoyé:

list[Entry]

login: bytes | None
metadata: bytes | None
name: bytes | None = None
password: bytes | None
properties: bytes | None = None
class nitrokey.nk3.secrets_app.RawBytes

Bases : object

RawBytes(data : list[int])

__init__(data)
Paramètres:

data (list[int])

Type renvoyé:

None

data: list[int]
class nitrokey.nk3.secrets_app.SecretsApp

Bases : object

Il s’agit d’un client de l’application Secrets https://github.com/Nitrokey/trussed-secrets-app

__init__(dev, logfn=None)
Paramètres:
  • dev (NK3)

  • logfn (Callable[[str], Any] | None)

calculate(cred_id, challenge=None)

Calculer le code OTP pour le titre nommé cred_id, et avec le défi challenge.

Paramètres:
  • cred_id (bytes) – The name of the credential

  • challenge (int | None) – Défi pour les calculs (TOTP uniquement). Doit être égal à : timestamp/period. La valeur de la période couramment utilisée est 30.

Renvoie:

Code OTP sous forme de chaîne d’octets

Type renvoyé:

bytes

change_pin_raw(password, new_password)
Paramètres:
  • password (str)

  • new_password (str)

Type renvoyé:

None

clear_code()

Efface la phrase d’authentification utilisée pour d’autres commandes.

Type renvoyé:

None

delete(cred_id)

Supprime les informations d’identification avec l’identifiant donné. N’échoue pas si l’identifiant donné n’existe pas. :param credid : L’identifiant de la pièce d’identité

Paramètres:

cred_id (bytes)

Type renvoyé:

None

classmethod encode_properties_to_send(touch_button_required, pin_based_encryption, tlv=False)

Encode la structure des propriétés en un seul octet @param touch_button_required : si l’utilisation du bouton tactile est requise @param pin_based_encryption : si le cryptage du code PIN est demandé (uniquement lors de l’enregistrement) @param tlv : met True, si cela doit être encodé en tant que TLV, par opposition à l’encodage par défaut « TV », sans L

Paramètres:
  • touch_button_required (bool)

  • pin_based_encryption (bool)

  • tlv (bool)

Type renvoyé:

RawBytes

feature_active_PIN_authentication()
Type renvoyé:

bool

feature_challenge_response_support()
Type renvoyé:

bool

feature_extended_list()
Type renvoyé:

bool

feature_old_application_version()
Type renvoyé:

bool

feature_pws_support()
Type renvoyé:

bool

get_credential(cred_id)
Paramètres:

cred_id (bytes)

Type renvoyé:

PasswordSafeEntry

get_feature_status_cached()
Type renvoyé:

SelectResponse

get_response_for_secret(challenge, secret)
Paramètres:
  • challenge (bytes)

  • secret (bytes)

Type renvoyé:

bytes

get_secret_for_passphrase(passphrase)
Paramètres:

passphrase (str)

Type renvoyé:

bytes

is_pin_healthy()
Type renvoyé:

bool

list(extended=False)

Renvoie une liste des informations d’identification enregistrées :return : Liste de chaînes de caractères, ou tuple de chaînes de caractères, si le commutateur « extended » est fourni @deprecated

Paramètres:

extended (bool)

Type renvoyé:

list[Tuple[bytes, bytes] | bytes]

list_with_properties(version=1)

Renvoie une liste des informations d’identification enregistrées avec les propriétés :return : Liste d’éléments de liste

Paramètres:

version (int)

Type renvoyé:

List[ListItem]

protocol_v2_confirm_all_requests_with_pin()
Type renvoyé:

bool

protocol_v3_separate_pin_and_no_pin_space()
Type renvoyé:

bool

register(credid, secret=b'00000000000000000000', digits=6, kind=Kind.NotSet, algo=Algorithm.Sha1, initial_counter_value=0, touch_button_required=False, pin_based_encryption=False, login=None, password=None, metadata=None)

Enregistrer un nouveau justificatif OTP :param credid : ID du justificatif :param secret : Clé partagée :param digits : Chiffres du code produit :param kind : Variante OTP - HOTP ou TOTP :param algo : Algorithme de hachage à utiliser - SHA1, SHA256 ou SHA512 :param initial_counter_value : Valeur initiale du compteur pour le justificatif HOTP (HOTP uniquement) :param touch_button_required : La confirmation de la présence de l’utilisateur est requise pour utiliser ce justificatif :param pin_based_encryption : Préférence de l’utilisateur pour un cryptage supplémentaire basé sur le code PIN :param login : Champ de connexion pour le coffre-fort à mot de passe :param password : Champ de mot de passe pour le coffre-fort à mot de passe :param metadata : Champ de métadonnées pour le coffre-fort à mot de passe :return : Aucun

Paramètres:
  • credid (bytes)

  • secret (bytes)

  • digits (int)

  • kind (Kind)

  • algo (Algorithm)

  • initial_counter_value (int)

  • touch_button_required (bool)

  • pin_based_encryption (bool)

  • login (bytes | None)

  • password (bytes | None)

  • metadata (bytes | None)

Type renvoyé:

None

register_yk_hmac(slot, secret)

Enregistrer une fente de défi-réponse compatible avec Yubikey. @param slot : challenge-response slot @param secret : le secret

Paramètres:
  • slot (int)

  • secret (bytes)

Type renvoyé:

None

rename_credential(cred_id, new_name)

Renommer l’identifiant. Un alias pour l’appel update_credential(). @param cred_id : L’identifiant de la carte de crédit à modifier @param new_name : Nouvel identifiant de la carte de crédit

Paramètres:
  • cred_id (bytes)

  • new_name (bytes)

Type renvoyé:

None

reset()

Supprimer toutes les informations d’identification de la base de données

Type renvoyé:

None

select()

Exécute la commande SELECT, qui renvoie des informations sur l’appareil, y compris le défi nécessaire à l’authentification. :return SelectResponse Structure d’état. Les champs Challenge et Algorithm valent None, si la phrase d’authentification n’est pas définie.

Type renvoyé:

SelectResponse

set_code(passphrase)

Définir le code avec les valeurs par défaut suggérées dans la spécification du protocole : - https://developers.yubico.com/OATH/YKOATH_Protocol.html

Paramètres:

passphrase (str)

Type renvoyé:

None

set_code_raw(key, challenge, response)

Définit ou efface la phrase d’authentification utilisée pour s’authentifier auprès d’autres commandes. Interface brute. :param key : Phrase de passe de l’utilisateur traitée par PBKDF2(ID,1000), et limitée aux 16 premiers octets. :param challenge : Le challenge actuel provenant de la commande SELECT. :param response : Les données calculées sur le client, comme preuve d’une configuration correcte.

Paramètres:
  • key (bytes)

  • challenge (bytes)

  • response (bytes)

Type renvoyé:

None

set_pin_raw(password)
Paramètres:

password (str)

Type renvoyé:

None

update_credential(cred_id, new_name=None, login=None, password=None, metadata=None, touch_button=None)

Mettre à jour les champs de la carte d’identité - nom, attributs et champs PWS. Les champs non remplis ne seront pas encodés et utilisés pendant le processus de mise à jour (ils ne changeront pas la valeur actuelle). @param cred_id : L’identifiant du titre à modifier @param new_name : Nouvel identifiant du titre @param login : Nouveau contenu du champ login @param password : Nouveau contenu du champ password @param metadata : Nouveau contenu du champ métadonnées @param touch_button : Définit si l’utilisation du bouton tactile doit être obligatoire

Paramètres:
  • cred_id (bytes)

  • new_name (bytes | None)

  • login (bytes | None)

  • password (bytes | None)

  • metadata (bytes | None)

  • touch_button (bool | None)

Type renvoyé:

None

validate(passphrase)

Authenticate using a passphrase

Paramètres:

passphrase (str)

Type renvoyé:

None

validate_raw(challenge, response)

Authentification à l’aide d’une phrase d’authentification. Interface brute. :param challenge : Le challenge actuel provenant de la commande SELECT. :param response : La réponse calculée en fonction du défi et du secret

Paramètres:
  • challenge (bytes)

  • response (bytes)

Type renvoyé:

bytes

verify_code(cred_id, code)

Procède à la vérification du code OTP entrant (alias HOTP inversé). :param cred_id : Le nom de la carte d’identité :param code : Le code HOTP à vérifier. représentation u32. :return : échoue avec une erreur OTPAppException ; renvoie True si le code correspond à la valeur calculée en interne.

Paramètres:
  • cred_id (bytes)

  • code (int)

Type renvoyé:

bool

verify_pin_raw(password)
Paramètres:

password (str)

Type renvoyé:

None

dev: NK3
log: Logger
logfn: Callable[[str], Any]
write_corpus_fn: Callable[[Instruction | CCIDInstruction, bytes], Any] | None
class nitrokey.nk3.secrets_app.SecretsAppExceptionID

Bases : IntEnum

__new__(value)
ClassNotSupported = 28160
CommandChainingNotSupported = 26756
ConditionsOfUseNotSatisfied = 27013
FunctionNotSupported = 27265
IncorrectDataParameter = 27264
IncorrectP1OrP2Parameter = 27270
InstructionNotSupportedOrInvalid = 27904
KeyReferenceNotFound = 27272
LogicalChannelNotSupported = 26753
MoreDataAvailable = 25087
NotEnoughMemory = 27268
NotFound = 27266
OperationBlocked = 27011
SecureMessagingNotSupported = 26754
SecurityStatusNotSatisfied = 27010
Success = 36864
UnspecifiedCheckingError = 28416
UnspecifiedNonpersistentExecutionError = 25600
UnspecifiedPersistentExecutionError = 25856
VerificationFailed = 25344
WrongLength = 26368
class nitrokey.nk3.secrets_app.SelectResponse

Bases : object

SelectResponse(version : Optional[bytes], pin_attempt_counter : Optional[int], salt : Facultatif[octets], challenge : Facultatif[octets], algorithme : Facultatif[octets], numéro de série : Facultatif[octets])

__init__(version, pin_attempt_counter, salt, challenge, algorithm, serial_number)
Paramètres:
  • version (bytes | None)

  • pin_attempt_counter (int | None)

  • salt (bytes | None)

  • challenge (bytes | None)

  • algorithm (bytes | None)

  • serial_number (bytes | None)

Type renvoyé:

None

version_str()
Type renvoyé:

str

algorithm: bytes | None
challenge: bytes | None
pin_attempt_counter: int | None
salt: bytes | None
serial_number: bytes | None
version: bytes | None
class nitrokey.nk3.secrets_app.Tag

Bases : Enum

Algorithm = 123
Challenge = 116
CredentialId = 113
InitialCounter = 122
Key = 115
NameList = 114
NewPassword = 129
PINCounter = 130
Password = 128
Properties = 120
PwsLogin = 131
PwsMetadata = 133
PwsPassword = 132
Response = 117
SerialNumber = 143
Version = 121