nitrokey.nk3.secrets_app¶
Oath Authenticator client
通过 CTAPHID 传输,通过自定义供应商命令使用。也可通过 CCID 直接使用。
- exception nitrokey.nk3.secrets_app.SecretsAppException¶
基类:
Exception
SecretsAppException(代码:str,上下文:str)
- __init__(code, context)¶
- 参数:
code (str)
context (str)
- 返回类型:
None
- to_id()¶
- 返回类型:
- to_string()¶
- 返回类型:
str
- code: str¶
- context: str¶
- exception nitrokey.nk3.secrets_app.SecretsAppHealthCheckException¶
基类:
Exception
- class nitrokey.nk3.secrets_app.Instruction¶
基类:
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¶
基类:
Enum
- classmethod from_attribute_byte(attribute_byte)¶
- 参数:
attribute_byte (bytes)
- 返回类型:
str
- Hmac = 64¶
- Hotp = 16¶
- HotpReverse = 48¶
- NotSet = 240¶
- Totp = 32¶
- class nitrokey.nk3.secrets_app.ListItem¶
基类:
object
ListItem(kind: 'Kind', algorithm: 'Algorithm', label: bytes, properties: nitrokey.nk3.secrets_app.ListItemProperties)
- __init__(kind, algorithm, label, properties)¶
- 参数:
kind (Kind)
algorithm (Algorithm)
label (bytes)
properties (ListItemProperties)
- 返回类型:
None
- classmethod get_type_name(x)¶
- 参数:
x (Any)
- 返回类型:
str
- label: bytes¶
- properties: ListItemProperties¶
- class nitrokey.nk3.secrets_app.ListItemProperties¶
基类:
object
ListItemProperties(touch_required: bool, secret_encryption: bool, pws_data_exist: bool)
- __init__(touch_required, secret_encryption, pws_data_exist)¶
- 参数:
touch_required (bool)
secret_encryption (bool)
pws_data_exist (bool)
- 返回类型:
None
- classmethod from_byte(b)¶
- 参数:
b (int)
- 返回类型:
- pws_data_exist: bool¶
- secret_encryption: bool¶
- touch_required: bool¶
- class nitrokey.nk3.secrets_app.PasswordSafeEntry¶
基类:
object
PasswordSafeEntry(login:可选[字节], password:可选[字节], 元数据:可选[字节], 属性可选[字节] = None, 名称:可选[字节] = None)
- __init__(login, password, metadata, properties=None, name=None)¶
- 参数:
login (bytes | None)
password (bytes | None)
metadata (bytes | None)
properties (bytes | None)
name (bytes | None)
- 返回类型:
None
- tlv_encode()¶
- 返回类型:
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¶
基类:
object
RawBytes(data: list[int])
- __init__(data)¶
- 参数:
data (list[int])
- 返回类型:
None
- data: list[int]¶
- class nitrokey.nk3.secrets_app.SecretsApp¶
基类:
object
这是一个 Secrets App 客户端 https://github.com/Nitrokey/trussed-secrets-app
- calculate(cred_id, challenge=None)¶
为名为`cred_id`的证书计算OTP代码,并使用挑战`challenge`。
- 参数:
cred_id (bytes) -- The name of the credential
challenge (int | None) -- 计算挑战(仅限 TOTP)。应等于:时间戳/周期。常用的周期值为 30。
- 返回:
作为字节字符串的 OTP 代码
- 返回类型:
bytes
- change_pin_raw(password, new_password)¶
- 参数:
password (str)
new_password (str)
- 返回类型:
None
- clear_code()¶
清除用于验证其他命令的口令。
- 返回类型:
None
- delete(cred_id)¶
删除指定 id 的证书。如果给定的证书不存在,删除不会失败:证书 ID
- 参数:
cred_id (bytes)
- 返回类型:
None
- classmethod encode_properties_to_send(touch_button_required, pin_based_encryption, tlv=False)¶
将属性结构编码为单字节 @param touch_button_required:是否要求使用触摸按钮 @param pin_based_encryption:是否要求使用 PIN 加密(仅在注册时) @param tlv:如果应编码为 TLV,而不是默认的 "TV",则设置为 "True"。
- 参数:
touch_button_required (bool)
pin_based_encryption (bool)
tlv (bool)
- 返回类型:
- feature_active_PIN_authentication()¶
- 返回类型:
bool
- feature_challenge_response_support()¶
- 返回类型:
bool
- feature_extended_list()¶
- 返回类型:
bool
- feature_old_application_version()¶
- 返回类型:
bool
- feature_pws_support()¶
- 返回类型:
bool
- get_credential(cred_id)¶
- 参数:
cred_id (bytes)
- 返回类型:
- get_feature_status_cached()¶
- 返回类型:
- get_response_for_secret(challenge, secret)¶
- 参数:
challenge (bytes)
secret (bytes)
- 返回类型:
bytes
- get_secret_for_passphrase(passphrase)¶
- 参数:
passphrase (str)
- 返回类型:
bytes
- is_pin_healthy()¶
- 返回类型:
bool
- list(extended=False)¶
返回已注册证书的列表 :return:字节字符串列表,或字节字符串元组(如果提供了 "扩展 "开关) @deprecated
- 参数:
extended (bool)
- 返回类型:
list[Tuple[bytes, bytes] | bytes]
- list_with_properties(version=1)¶
返回带属性的已注册凭证列表 :return:ListItems 列表
- 参数:
version (int)
- 返回类型:
List[ListItem]
- protocol_v2_confirm_all_requests_with_pin()¶
- 返回类型:
bool
- protocol_v3_separate_pin_and_no_pin_space()¶
- 返回类型:
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)¶
注册新的 OTP 凭据 :param credid:凭证 ID :param secret:共享密钥 :param digits:生成代码的位数 :param kind:OTP变体--HOTP或TOTP :param algo:哈希算法--SHA1、SHA256或SHA512 :param initial_counter_value:HOTP证书的计数器初始值(仅限HOTP) :param touch_button_required:使用此凭据需要用户确认是否在场 :param pin_based_encryption:用户对基于密码的额外加密的偏好 :param login:密码保险箱的登录字段 :param password: 密码保险箱的密码字段 :param metadata:用于密码保险箱的元数据字段 :return:无
- register_yk_hmac(slot, secret)¶
注册一个与 Yubikey 兼容的挑战-响应槽。@param slot:挑战-响应槽 @param secret:秘密
- 参数:
slot (int)
secret (bytes)
- 返回类型:
None
- rename_credential(cred_id, new_name)¶
重命名凭据。update_credential() 调用的别名。@param cred_id:要修改的凭据 ID @param new_name:凭据的新 ID
- 参数:
cred_id (bytes)
new_name (bytes)
- 返回类型:
None
- reset()¶
从数据库中删除所有证书
- 返回类型:
None
- select()¶
执行 SELECT 命令,返回设备的详细信息,包括身份验证所需的密码。 :return SelectResponse Status 结构。如果未设置口令,Challenge 和 Algorithm 字段为 None。
- 返回类型:
- set_code(passphrase)¶
根据协议规范建议的默认值设置代码: - https://developers.yubico.com/OATH/YKOATH_Protocol.html
- 参数:
passphrase (str)
- 返回类型:
None
- set_code_raw(key, challenge, response)¶
设置或清除用于验证其他命令的口令。原始接口:通过 PBKDF2(ID,1000)处理的用户密码,仅限于前 16 个字节。 :param challenge:从 SELECT 命令中获取的当前密码。 :param response:响应:客户端计算的数据,证明设置正确。
- 参数:
key (bytes)
challenge (bytes)
response (bytes)
- 返回类型:
None
- set_pin_raw(password)¶
- 参数:
password (str)
- 返回类型:
None
- update_credential(cred_id, new_name=None, login=None, password=None, metadata=None, touch_button=None)¶
更新凭证字段--名称、属性和 PWS 字段。在更新过程中,未填充的字段不会被编码和使用(不会改变当前值)。@param cred_id:要修改的证书 ID @param new_name:证书的新 ID @param login:新的登录字段内容 @param password:密码:新的登录字段内容 @param password: 新的密码字段内容 @param metadata:新元数据字段内容 @param touch_button:设置是否需要使用触摸按钮
- 参数:
cred_id (bytes)
new_name (bytes | None)
login (bytes | None)
password (bytes | None)
metadata (bytes | None)
touch_button (bool | None)
- 返回类型:
None
- validate(passphrase)¶
Authenticate using a passphrase
- 参数:
passphrase (str)
- 返回类型:
None
- validate_raw(challenge, response)¶
使用口令进行身份验证。:param challenge:从 SELECT 命令中获取的当前挑战。 :param response:响应:根据挑战和密码计算得出的响应。
- 参数:
challenge (bytes)
response (bytes)
- 返回类型:
bytes
- verify_code(cred_id, code)¶
进行输入的 OTP 代码验证(又称反向 HOTP):凭证名称 :param code:要验证的 HOTP 代码。u32 表示。 :return: 验证失败,会出现 OTPAppException 错误;如果代码与内部计算值一致,则返回 True。
- 参数:
cred_id (bytes)
code (int)
- 返回类型:
bool
- verify_pin_raw(password)¶
- 参数:
password (str)
- 返回类型:
None
- log: Logger¶
- logfn: Callable[[str], Any]¶
- write_corpus_fn: Callable[[Instruction | CCIDInstruction, bytes], Any] | None¶
- class nitrokey.nk3.secrets_app.SecretsAppExceptionID¶
基类:
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¶
基类:
object
SelectResponse(version:可选[字节], pin_attempt_counter:可选[int], salt:可选[字节], challenge:可选[字节], 算法:可选[字节], serial_number:可选[字节])
- __init__(version, pin_attempt_counter, salt, challenge, algorithm, serial_number)¶
- 参数:
version (bytes | None)
pin_attempt_counter (int | None)
salt (bytes | None)
challenge (bytes | None)
algorithm (bytes | None)
serial_number (bytes | None)
- 返回类型:
None
- version_str()¶
- 返回类型:
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¶
基类:
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¶