@doko/react-native-yubikit 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +126 -0
- package/RNYubikit.podspec +22 -0
- package/android/build.gradle +63 -0
- package/android/src/main/AndroidManifest.xml +9 -0
- package/android/src/main/java/com/yubikit/YubiKitManagerHolder.kt +330 -0
- package/android/src/main/java/com/yubikit/YubikitCoreModule.kt +142 -0
- package/android/src/main/java/com/yubikit/YubikitFidoModule.kt +418 -0
- package/android/src/main/java/com/yubikit/YubikitManagementModule.kt +132 -0
- package/android/src/main/java/com/yubikit/YubikitOathModule.kt +224 -0
- package/android/src/main/java/com/yubikit/YubikitOpenPgpModule.kt +317 -0
- package/android/src/main/java/com/yubikit/YubikitPackage.kt +44 -0
- package/android/src/main/java/com/yubikit/YubikitPivModule.kt +310 -0
- package/android/src/main/java/com/yubikit/YubikitSupportModule.kt +108 -0
- package/android/src/main/java/com/yubikit/YubikitYubiOtpModule.kt +248 -0
- package/android/src/main/java/com/yubikit/utils/YubikitUtils.kt +321 -0
- package/ios/YubikitCore.h +5 -0
- package/ios/YubikitCore.mm +101 -0
- package/ios/YubikitDeviceInfoHelper.h +13 -0
- package/ios/YubikitDeviceInfoHelper.mm +110 -0
- package/ios/YubikitFido.h +5 -0
- package/ios/YubikitFido.mm +373 -0
- package/ios/YubikitManagement.h +5 -0
- package/ios/YubikitManagement.mm +153 -0
- package/ios/YubikitManager.h +27 -0
- package/ios/YubikitManager.m +169 -0
- package/ios/YubikitOath.h +5 -0
- package/ios/YubikitOath.mm +583 -0
- package/ios/YubikitOpenPgp.h +5 -0
- package/ios/YubikitOpenPgp.mm +210 -0
- package/ios/YubikitPiv.h +5 -0
- package/ios/YubikitPiv.mm +813 -0
- package/ios/YubikitSupport.h +5 -0
- package/ios/YubikitSupport.mm +58 -0
- package/ios/YubikitYubiOtp.h +5 -0
- package/ios/YubikitYubiOtp.mm +120 -0
- package/lib/module/core.js +34 -0
- package/lib/module/core.js.map +1 -0
- package/lib/module/fido.js +40 -0
- package/lib/module/fido.js.map +1 -0
- package/lib/module/hooks/index.js +5 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/use-yubikey.js +12 -0
- package/lib/module/hooks/use-yubikey.js.map +1 -0
- package/lib/module/hooks/yubikey-provider.js +85 -0
- package/lib/module/hooks/yubikey-provider.js.map +1 -0
- package/lib/module/index.js +12 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/management.js +17 -0
- package/lib/module/management.js.map +1 -0
- package/lib/module/oath.js +53 -0
- package/lib/module/oath.js.map +1 -0
- package/lib/module/openpgp.js +89 -0
- package/lib/module/openpgp.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/piv.js +71 -0
- package/lib/module/piv.js.map +1 -0
- package/lib/module/specs/NativeYubikitCore.js +10 -0
- package/lib/module/specs/NativeYubikitCore.js.map +1 -0
- package/lib/module/specs/NativeYubikitFido.js +5 -0
- package/lib/module/specs/NativeYubikitFido.js.map +1 -0
- package/lib/module/specs/NativeYubikitManagement.js +5 -0
- package/lib/module/specs/NativeYubikitManagement.js.map +1 -0
- package/lib/module/specs/NativeYubikitOath.js +5 -0
- package/lib/module/specs/NativeYubikitOath.js.map +1 -0
- package/lib/module/specs/NativeYubikitOpenPgp.js +5 -0
- package/lib/module/specs/NativeYubikitOpenPgp.js.map +1 -0
- package/lib/module/specs/NativeYubikitPiv.js +5 -0
- package/lib/module/specs/NativeYubikitPiv.js.map +1 -0
- package/lib/module/specs/NativeYubikitSupport.js +5 -0
- package/lib/module/specs/NativeYubikitSupport.js.map +1 -0
- package/lib/module/specs/NativeYubikitYubiOtp.js +5 -0
- package/lib/module/specs/NativeYubikitYubiOtp.js.map +1 -0
- package/lib/module/support.js +11 -0
- package/lib/module/support.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/yubiotp.js +32 -0
- package/lib/module/yubiotp.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/core.d.ts +14 -0
- package/lib/typescript/src/core.d.ts.map +1 -0
- package/lib/typescript/src/fido.d.ts +24 -0
- package/lib/typescript/src/fido.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +3 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/use-yubikey.d.ts +3 -0
- package/lib/typescript/src/hooks/use-yubikey.d.ts.map +1 -0
- package/lib/typescript/src/hooks/yubikey-provider.d.ts +23 -0
- package/lib/typescript/src/hooks/yubikey-provider.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/management.d.ts +8 -0
- package/lib/typescript/src/management.d.ts.map +1 -0
- package/lib/typescript/src/oath.d.ts +20 -0
- package/lib/typescript/src/oath.d.ts.map +1 -0
- package/lib/typescript/src/openpgp.d.ts +35 -0
- package/lib/typescript/src/openpgp.d.ts.map +1 -0
- package/lib/typescript/src/piv.d.ts +26 -0
- package/lib/typescript/src/piv.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitCore.d.ts +49 -0
- package/lib/typescript/src/specs/NativeYubikitCore.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitFido.d.ts +121 -0
- package/lib/typescript/src/specs/NativeYubikitFido.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitManagement.d.ts +53 -0
- package/lib/typescript/src/specs/NativeYubikitManagement.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitOath.d.ts +70 -0
- package/lib/typescript/src/specs/NativeYubikitOath.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitOpenPgp.d.ts +53 -0
- package/lib/typescript/src/specs/NativeYubikitOpenPgp.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitPiv.d.ts +47 -0
- package/lib/typescript/src/specs/NativeYubikitPiv.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitSupport.d.ts +49 -0
- package/lib/typescript/src/specs/NativeYubikitSupport.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeYubikitYubiOtp.d.ts +45 -0
- package/lib/typescript/src/specs/NativeYubikitYubiOtp.d.ts.map +1 -0
- package/lib/typescript/src/support.d.ts +6 -0
- package/lib/typescript/src/support.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +293 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/yubiotp.d.ts +13 -0
- package/lib/typescript/src/yubiotp.d.ts.map +1 -0
- package/package.json +181 -0
- package/src/core.ts +58 -0
- package/src/fido.ts +112 -0
- package/src/hooks/index.tsx +2 -0
- package/src/hooks/use-yubikey.tsx +10 -0
- package/src/hooks/yubikey-provider.tsx +146 -0
- package/src/index.tsx +10 -0
- package/src/management.ts +44 -0
- package/src/oath.ts +134 -0
- package/src/openpgp.ts +220 -0
- package/src/piv.ts +193 -0
- package/src/specs/NativeYubikitCore.ts +68 -0
- package/src/specs/NativeYubikitFido.ts +149 -0
- package/src/specs/NativeYubikitManagement.ts +78 -0
- package/src/specs/NativeYubikitOath.ts +110 -0
- package/src/specs/NativeYubikitOpenPgp.ts +148 -0
- package/src/specs/NativeYubikitPiv.ts +108 -0
- package/src/specs/NativeYubikitSupport.ts +61 -0
- package/src/specs/NativeYubikitYubiOtp.ts +82 -0
- package/src/support.ts +18 -0
- package/src/types.ts +404 -0
- package/src/yubiotp.ts +96 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TypeScript types mirroring the YubiKit Android SDK v3 public API.
|
|
3
|
+
* Serialization over the bridge uses plain objects and base64-encoded byte arrays.
|
|
4
|
+
*/
|
|
5
|
+
export type Base64String = string;
|
|
6
|
+
export type Transport = 'usb' | 'nfc';
|
|
7
|
+
export interface Version {
|
|
8
|
+
major: number;
|
|
9
|
+
minor: number;
|
|
10
|
+
micro: number;
|
|
11
|
+
}
|
|
12
|
+
export interface YubiKeyDevice {
|
|
13
|
+
/** Unique handle for this device within the current session. */
|
|
14
|
+
handle: string;
|
|
15
|
+
transport: Transport;
|
|
16
|
+
/** Types of connections supported by the device, e.g. ["SmartCardConnection"]. */
|
|
17
|
+
supportedConnections: string[];
|
|
18
|
+
}
|
|
19
|
+
export type ConnectionType = 'SmartCardConnection' | 'OtpConnection' | 'FidoConnection';
|
|
20
|
+
export interface UsbConfiguration {
|
|
21
|
+
handlePermissions?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface NfcConfiguration {
|
|
24
|
+
timeout?: number;
|
|
25
|
+
disableNfcDiscoverySound?: boolean;
|
|
26
|
+
skipNdefCheck?: boolean;
|
|
27
|
+
handleUnavailableNfc?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface NfcNotAvailableError {
|
|
30
|
+
disabled: boolean;
|
|
31
|
+
message: string;
|
|
32
|
+
}
|
|
33
|
+
export type YubiKeyEvent = {
|
|
34
|
+
type: 'attached';
|
|
35
|
+
device: YubiKeyDevice;
|
|
36
|
+
} | {
|
|
37
|
+
type: 'detached';
|
|
38
|
+
handle: string;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'error';
|
|
41
|
+
error: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Wire shape emitted by the native `onYubiKeyEvent` EventEmitter. Codegen doesn't
|
|
45
|
+
* support discriminated union payloads, so all variant fields are optional here;
|
|
46
|
+
* `addYubiKeyListener` narrows this to {@link YubiKeyEvent} for consumers.
|
|
47
|
+
*/
|
|
48
|
+
export interface YubiKeyEventPayload {
|
|
49
|
+
type: 'attached' | 'detached' | 'error';
|
|
50
|
+
device?: YubiKeyDevice;
|
|
51
|
+
handle?: string;
|
|
52
|
+
error?: string;
|
|
53
|
+
}
|
|
54
|
+
/** Core module enums */
|
|
55
|
+
export type YubiKeyType = 'YKS' | 'NEO' | 'SKY' | 'YKP' | 'YK4' | 'OTHER';
|
|
56
|
+
export type FormFactor = 'UNKNOWN' | 'USB_A_KEYCHAIN' | 'USB_A_NANO' | 'USB_C_KEYCHAIN' | 'USB_C_NANO' | 'USB_C_LIGHTNING' | 'USB_A_BIO' | 'USB_C_BIO';
|
|
57
|
+
export type Capability = 'OTP' | 'U2F' | 'OPENPGP' | 'PIV' | 'OATH' | 'HSMAUTH' | 'FIDO2';
|
|
58
|
+
export interface DeviceConfig {
|
|
59
|
+
enabledCapabilities?: Partial<Record<Transport, number>>;
|
|
60
|
+
autoEjectTimeout?: number;
|
|
61
|
+
challengeResponseTimeout?: number;
|
|
62
|
+
nfcRestricted?: boolean;
|
|
63
|
+
deviceFlags?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface DeviceInfo {
|
|
66
|
+
config?: DeviceConfig;
|
|
67
|
+
serialNumber?: number;
|
|
68
|
+
version: Version;
|
|
69
|
+
versionName: string;
|
|
70
|
+
formFactor: FormFactor;
|
|
71
|
+
supportedCapabilities: Partial<Record<Transport, number>>;
|
|
72
|
+
hasTransportUsb: boolean;
|
|
73
|
+
hasTransportNfc: boolean;
|
|
74
|
+
isLocked: boolean;
|
|
75
|
+
isFips: boolean;
|
|
76
|
+
isSky: boolean;
|
|
77
|
+
partNumber?: string;
|
|
78
|
+
fipsCapable: number;
|
|
79
|
+
fipsApproved: number;
|
|
80
|
+
pinComplexity: boolean;
|
|
81
|
+
resetBlocked: number;
|
|
82
|
+
fpsVersion?: Version;
|
|
83
|
+
stmVersion?: Version;
|
|
84
|
+
versionQualifier?: string;
|
|
85
|
+
}
|
|
86
|
+
export type UsbMode = 'OTP' | 'FIDO' | 'CCID' | 'OTP_FIDO' | 'OTP_CCID' | 'FIDO_CCID' | 'OTP_FIDO_CCID';
|
|
87
|
+
/** OATH module */
|
|
88
|
+
export type OathType = 'HOTP' | 'TOTP';
|
|
89
|
+
export type HashAlgorithm = 'SHA1' | 'SHA256' | 'SHA512';
|
|
90
|
+
export interface Credential {
|
|
91
|
+
id: Base64String;
|
|
92
|
+
oathType: OathType;
|
|
93
|
+
issuer?: string;
|
|
94
|
+
accountName: string;
|
|
95
|
+
period: number;
|
|
96
|
+
touchRequired: boolean;
|
|
97
|
+
}
|
|
98
|
+
export interface Code {
|
|
99
|
+
value: string;
|
|
100
|
+
validFrom: number;
|
|
101
|
+
validUntil: number;
|
|
102
|
+
}
|
|
103
|
+
export interface CredentialData {
|
|
104
|
+
accountName: string;
|
|
105
|
+
oathType: OathType;
|
|
106
|
+
hashAlgorithm: HashAlgorithm;
|
|
107
|
+
secret: Base64String;
|
|
108
|
+
digits: number;
|
|
109
|
+
period: number;
|
|
110
|
+
counter: number;
|
|
111
|
+
issuer?: string;
|
|
112
|
+
}
|
|
113
|
+
export interface OathCredentialsResult {
|
|
114
|
+
credentials: Credential[];
|
|
115
|
+
}
|
|
116
|
+
export interface OathCodesResult {
|
|
117
|
+
codes: Array<{
|
|
118
|
+
credential: Credential;
|
|
119
|
+
code?: Code;
|
|
120
|
+
}>;
|
|
121
|
+
}
|
|
122
|
+
/** PIV module */
|
|
123
|
+
export type PivSlot = 'AUTHENTICATION' | 'SIGNATURE' | 'KEY_MANAGEMENT' | 'CARD_AUTH' | 'RETIRED1' | 'RETIRED2' | 'RETIRED3' | 'RETIRED4' | 'RETIRED5' | 'RETIRED6' | 'RETIRED7' | 'RETIRED8' | 'RETIRED9' | 'RETIRED10' | 'RETIRED11' | 'RETIRED12' | 'RETIRED13' | 'RETIRED14' | 'RETIRED15' | 'RETIRED16' | 'RETIRED17' | 'RETIRED18' | 'RETIRED19' | 'RETIRED20' | 'ATTESTATION';
|
|
124
|
+
export type PivKeyType = 'RSA1024' | 'RSA2048' | 'RSA3072' | 'RSA4096' | 'ECCP256' | 'ECCP384' | 'ED25519' | 'X25519';
|
|
125
|
+
export type PivPinPolicy = 'DEFAULT' | 'NEVER' | 'ONCE' | 'ALWAYS' | 'MATCH_ONCE' | 'MATCH_ALWAYS';
|
|
126
|
+
export type PivTouchPolicy = 'DEFAULT' | 'NEVER' | 'ALWAYS' | 'CACHED';
|
|
127
|
+
export type PivManagementKeyType = 'TDES' | 'AES128' | 'AES192' | 'AES256';
|
|
128
|
+
export interface PivPinMetadata {
|
|
129
|
+
attemptsRemaining: number;
|
|
130
|
+
}
|
|
131
|
+
export interface PivSlotMetadata {
|
|
132
|
+
keyType: PivKeyType;
|
|
133
|
+
pinPolicy: PivPinPolicy;
|
|
134
|
+
touchPolicy: PivTouchPolicy;
|
|
135
|
+
generated: boolean;
|
|
136
|
+
publicKey?: Base64String;
|
|
137
|
+
}
|
|
138
|
+
export interface PivManagementKeyMetadata {
|
|
139
|
+
keyType: PivManagementKeyType;
|
|
140
|
+
defaultValue: boolean;
|
|
141
|
+
touchRequired: boolean;
|
|
142
|
+
}
|
|
143
|
+
export interface PivBioMetadata {
|
|
144
|
+
attemptsRemaining?: number;
|
|
145
|
+
temporaryPin?: boolean;
|
|
146
|
+
}
|
|
147
|
+
/** OpenPGP module */
|
|
148
|
+
export type OpenPgpKeyRef = 'SIG' | 'DEC' | 'AUT' | 'ATT';
|
|
149
|
+
export type OpenPgpUif = 'OFF' | 'ON' | 'FIXED' | 'CACHED' | 'CACHED_FIXED';
|
|
150
|
+
export type OpenPgpPinPolicy = 'ALWAYS' | 'ONCE';
|
|
151
|
+
export type OpenPgpCurve = 'SECP256R1' | 'SECP256K1' | 'SECP384R1' | 'SECP521R1' | 'BrainpoolP256R1' | 'BrainpoolP384R1' | 'BrainpoolP512R1' | 'X25519' | 'Ed25519';
|
|
152
|
+
export interface OpenPgpAlgorithmAttributes {
|
|
153
|
+
keyRef: OpenPgpKeyRef;
|
|
154
|
+
algorithm: string;
|
|
155
|
+
curve?: OpenPgpCurve;
|
|
156
|
+
keySize?: number;
|
|
157
|
+
}
|
|
158
|
+
export interface OpenPgpApplicationRelatedData {
|
|
159
|
+
aid: Base64String;
|
|
160
|
+
historical: Base64String;
|
|
161
|
+
signatureCounter: number;
|
|
162
|
+
}
|
|
163
|
+
/** YubiOTP module */
|
|
164
|
+
export type OtpSlot = 'ONE' | 'TWO';
|
|
165
|
+
export interface ConfigurationState {
|
|
166
|
+
slot1Configured: boolean;
|
|
167
|
+
slot2Configured: boolean;
|
|
168
|
+
slot1TouchTriggered: boolean;
|
|
169
|
+
slot2TouchTriggered: boolean;
|
|
170
|
+
ledInverted: boolean;
|
|
171
|
+
}
|
|
172
|
+
export type OtpConfigurationType = 'YubiOtp' | 'HOTP' | 'HmacSha1' | 'StaticPassword' | 'StaticTicket' | 'Update';
|
|
173
|
+
export interface OtpSlotConfiguration {
|
|
174
|
+
type: OtpConfigurationType;
|
|
175
|
+
/** Base64-encoded fixed public ID (YubiOTP/StaticTicket). */
|
|
176
|
+
fixed?: Base64String;
|
|
177
|
+
/** Base64-encoded private ID (YubiOTP/StaticTicket). */
|
|
178
|
+
uid?: Base64String;
|
|
179
|
+
/** Base64-encoded AES key. */
|
|
180
|
+
key?: Base64String;
|
|
181
|
+
/** Base64-encoded HOTP/HMAC secret. */
|
|
182
|
+
secret?: Base64String;
|
|
183
|
+
/** Base64-encoded scan codes (StaticPassword). */
|
|
184
|
+
scanCodes?: Base64String;
|
|
185
|
+
/** HOTP digits: 6 or 8. */
|
|
186
|
+
digits?: number;
|
|
187
|
+
/** HOTP initial moving factor. */
|
|
188
|
+
imf?: number;
|
|
189
|
+
/** HMAC-SHA1: require touch to trigger. */
|
|
190
|
+
requireTouch?: boolean;
|
|
191
|
+
/** HMAC-SHA1: allow less than 64 byte challenges. */
|
|
192
|
+
lt64?: boolean;
|
|
193
|
+
/** Common flags. */
|
|
194
|
+
appendCr?: boolean;
|
|
195
|
+
serialApiVisible?: boolean;
|
|
196
|
+
serialUsbVisible?: boolean;
|
|
197
|
+
allowUpdate?: boolean;
|
|
198
|
+
dormant?: boolean;
|
|
199
|
+
invertLed?: boolean;
|
|
200
|
+
}
|
|
201
|
+
/** FIDO module */
|
|
202
|
+
export interface PublicKeyCredentialCreationOptions {
|
|
203
|
+
rp: {
|
|
204
|
+
id: string;
|
|
205
|
+
name: string;
|
|
206
|
+
};
|
|
207
|
+
user: {
|
|
208
|
+
id: Base64String;
|
|
209
|
+
name: string;
|
|
210
|
+
displayName: string;
|
|
211
|
+
};
|
|
212
|
+
challenge: Base64String;
|
|
213
|
+
pubKeyCredParams: Array<{
|
|
214
|
+
type: string;
|
|
215
|
+
alg: number;
|
|
216
|
+
}>;
|
|
217
|
+
timeout?: number;
|
|
218
|
+
excludeCredentials?: Array<{
|
|
219
|
+
id: Base64String;
|
|
220
|
+
type: string;
|
|
221
|
+
transports?: string[];
|
|
222
|
+
}>;
|
|
223
|
+
authenticatorSelection?: {
|
|
224
|
+
authenticatorAttachment?: string;
|
|
225
|
+
residentKey?: string;
|
|
226
|
+
userVerification?: string;
|
|
227
|
+
};
|
|
228
|
+
attestation?: string;
|
|
229
|
+
extensions?: Record<string, unknown>;
|
|
230
|
+
}
|
|
231
|
+
export interface PublicKeyCredentialRequestOptions {
|
|
232
|
+
challenge: Base64String;
|
|
233
|
+
timeout?: number;
|
|
234
|
+
rpId?: string;
|
|
235
|
+
allowCredentials?: Array<{
|
|
236
|
+
id: Base64String;
|
|
237
|
+
type: string;
|
|
238
|
+
transports?: string[];
|
|
239
|
+
}>;
|
|
240
|
+
userVerification?: string;
|
|
241
|
+
extensions?: Record<string, unknown>;
|
|
242
|
+
}
|
|
243
|
+
export interface PublicKeyCredential {
|
|
244
|
+
id: Base64String;
|
|
245
|
+
rawId: Base64String;
|
|
246
|
+
type: 'public-key';
|
|
247
|
+
response: {
|
|
248
|
+
clientDataJSON: Base64String;
|
|
249
|
+
authenticatorData?: Base64String;
|
|
250
|
+
attestationObject?: Base64String;
|
|
251
|
+
signature?: Base64String;
|
|
252
|
+
userHandle?: Base64String;
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
export interface Ctap2Info {
|
|
256
|
+
versions: string[];
|
|
257
|
+
extensions?: string[];
|
|
258
|
+
aaguid?: Base64String;
|
|
259
|
+
options?: Record<string, boolean>;
|
|
260
|
+
maxMsgSize?: number;
|
|
261
|
+
pinUvAuthProtocols?: number[];
|
|
262
|
+
maxCredentialCountInList?: number;
|
|
263
|
+
maxCredentialIdLength?: number;
|
|
264
|
+
transports?: string[];
|
|
265
|
+
algorithms?: Array<{
|
|
266
|
+
type: string;
|
|
267
|
+
alg: number;
|
|
268
|
+
}>;
|
|
269
|
+
maxLargeBlob?: number;
|
|
270
|
+
minPinLength?: number;
|
|
271
|
+
firmwareVersion?: number;
|
|
272
|
+
maxCredBlobLength?: number;
|
|
273
|
+
maxRpidsForMinPinLength?: number;
|
|
274
|
+
preferredPlatformUvAttempts?: number;
|
|
275
|
+
uvModality?: number;
|
|
276
|
+
certifications?: Record<string, number>;
|
|
277
|
+
remainingDiscoverableCredentials?: number;
|
|
278
|
+
vendorPrototypeConfigCommands?: number[];
|
|
279
|
+
}
|
|
280
|
+
export interface FidoCredentialDescriptor {
|
|
281
|
+
id: Base64String;
|
|
282
|
+
type: string;
|
|
283
|
+
}
|
|
284
|
+
export interface FidoCredentialUserEntity {
|
|
285
|
+
id: Base64String;
|
|
286
|
+
name: string;
|
|
287
|
+
displayName: string;
|
|
288
|
+
}
|
|
289
|
+
/** Support module */
|
|
290
|
+
export interface SupportDeviceInfo extends DeviceInfo {
|
|
291
|
+
name: string;
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import NativeYubikitYubiOtp from './specs/NativeYubikitYubiOtp.js';
|
|
2
|
+
import type { Base64String, ConfigurationState, OtpSlot, OtpSlotConfiguration, Version } from './types.js';
|
|
3
|
+
export declare function getConfigurationState(deviceHandle: string): Promise<ConfigurationState>;
|
|
4
|
+
export declare function getVersion(deviceHandle: string): Promise<Version>;
|
|
5
|
+
export declare function getSerialNumber(deviceHandle: string): Promise<number>;
|
|
6
|
+
export declare function swapConfigurations(deviceHandle: string): Promise<void>;
|
|
7
|
+
export declare function deleteConfiguration(deviceHandle: string, slot: OtpSlot, currentAccessCode?: Base64String): Promise<void>;
|
|
8
|
+
export declare function putConfiguration(deviceHandle: string, slot: OtpSlot, configuration: OtpSlotConfiguration, accessCode?: Base64String, currentAccessCode?: Base64String): Promise<void>;
|
|
9
|
+
export declare function updateConfiguration(deviceHandle: string, slot: OtpSlot, configuration: OtpSlotConfiguration, accessCode?: Base64String, currentAccessCode?: Base64String): Promise<void>;
|
|
10
|
+
export declare function setNdefConfiguration(deviceHandle: string, slot: OtpSlot, uri?: string, currentAccessCode?: Base64String): Promise<void>;
|
|
11
|
+
export declare function calculateHmacSha1(deviceHandle: string, slot: OtpSlot, challenge: Base64String): Promise<Base64String>;
|
|
12
|
+
export { NativeYubikitYubiOtp };
|
|
13
|
+
//# sourceMappingURL=yubiotp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yubiotp.d.ts","sourceRoot":"","sources":["../../../src/yubiotp.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,iCAA8B,CAAC;AAChE,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,oBAAoB,EACpB,OAAO,EACR,MAAM,YAAS,CAAC;AAEjB,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAI7B;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjE;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,iBAAiB,CAAC,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,oBAAoB,EACnC,UAAU,CAAC,EAAE,YAAY,EACzB,iBAAiB,CAAC,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,oBAAoB,EACnC,UAAU,CAAC,EAAE,YAAY,EACzB,iBAAiB,CAAC,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@doko/react-native-yubikit",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "Yubikit bindings for React Native",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"android",
|
|
7
|
+
"ios",
|
|
8
|
+
"react-native"
|
|
9
|
+
],
|
|
10
|
+
"homepage": "https://github.com/Doko-Demo-Doa/react-native-yubikit#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Doko-Demo-Doa/react-native-yubikit/issues"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": "Quan Pham <doraemonfanclub@gmail.com> (https://github.com/Doko-Demo-Doah)",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/Doko-Demo-Doa/react-native-yubikit.git"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"src",
|
|
22
|
+
"lib",
|
|
23
|
+
"android",
|
|
24
|
+
"ios",
|
|
25
|
+
"cpp",
|
|
26
|
+
"*.podspec",
|
|
27
|
+
"react-native.config.js",
|
|
28
|
+
"!ios/build",
|
|
29
|
+
"!android/build",
|
|
30
|
+
"!android/gradle",
|
|
31
|
+
"!android/gradlew",
|
|
32
|
+
"!android/gradlew.bat",
|
|
33
|
+
"!android/local.properties",
|
|
34
|
+
"!**/__tests__",
|
|
35
|
+
"!**/__fixtures__",
|
|
36
|
+
"!**/__mocks__",
|
|
37
|
+
"!**/.*"
|
|
38
|
+
],
|
|
39
|
+
"main": "./lib/module/index.js",
|
|
40
|
+
"types": "./lib/typescript/src/index.d.ts",
|
|
41
|
+
"exports": {
|
|
42
|
+
".": {
|
|
43
|
+
"react-native-yubikit-source": "./src/index.tsx",
|
|
44
|
+
"types": "./lib/typescript/src/index.d.ts",
|
|
45
|
+
"default": "./lib/module/index.js"
|
|
46
|
+
},
|
|
47
|
+
"./package.json": "./package.json"
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public",
|
|
51
|
+
"registry": "https://registry.npmjs.org/"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"example": "pnpm --filter react-native-yubikit-example",
|
|
55
|
+
"clean": "del-cli lib",
|
|
56
|
+
"prepare": "bob build",
|
|
57
|
+
"typecheck": "tsc",
|
|
58
|
+
"lint": "oxlint",
|
|
59
|
+
"lint:fix": "oxlint --fix",
|
|
60
|
+
"format": "oxfmt",
|
|
61
|
+
"format:check": "oxfmt --check",
|
|
62
|
+
"test": "jest",
|
|
63
|
+
"release": "release-it --only-version"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
67
|
+
"@jest/globals": "^29.7.0",
|
|
68
|
+
"@react-native/babel-preset": "0.86.0",
|
|
69
|
+
"@react-native/eslint-plugin": "0.86.0",
|
|
70
|
+
"@react-native/jest-preset": "0.86.0",
|
|
71
|
+
"@release-it/conventional-changelog": "^11.0.1",
|
|
72
|
+
"@types/react": "^19.2.17",
|
|
73
|
+
"commitlint": "^21.2.1",
|
|
74
|
+
"del-cli": "^7.0.0",
|
|
75
|
+
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
76
|
+
"eslint-plugin-ft-flow": "^3.0.11",
|
|
77
|
+
"eslint-plugin-react-native": "^5.0.0",
|
|
78
|
+
"jest": "^29.7.0",
|
|
79
|
+
"lefthook": "^2.1.10",
|
|
80
|
+
"oxfmt": "^0.58.0",
|
|
81
|
+
"oxlint": "^1.73.0",
|
|
82
|
+
"react": "19.2.3",
|
|
83
|
+
"react-native": "0.86.0",
|
|
84
|
+
"react-native-builder-bob": "^0.43.0",
|
|
85
|
+
"release-it": "^20.2.1",
|
|
86
|
+
"turbo": "^2.10.4",
|
|
87
|
+
"typescript": "^6.0.3"
|
|
88
|
+
},
|
|
89
|
+
"peerDependencies": {
|
|
90
|
+
"react": "*",
|
|
91
|
+
"react-native": "*"
|
|
92
|
+
},
|
|
93
|
+
"commitlint": {
|
|
94
|
+
"extends": [
|
|
95
|
+
"@commitlint/config-conventional"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"jest": {
|
|
99
|
+
"modulePathIgnorePatterns": [
|
|
100
|
+
"<rootDir>/example/node_modules",
|
|
101
|
+
"<rootDir>/lib/"
|
|
102
|
+
],
|
|
103
|
+
"preset": "@react-native/jest-preset",
|
|
104
|
+
"testEnvironmentOptions": {
|
|
105
|
+
"customExportConditions": [
|
|
106
|
+
"require",
|
|
107
|
+
"react-native",
|
|
108
|
+
"<%- project.sourceCondition -%>"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"packageManager": "pnpm@11.10.0",
|
|
113
|
+
"codegenConfig": {
|
|
114
|
+
"name": "YubikitSpec",
|
|
115
|
+
"type": "modules",
|
|
116
|
+
"jsSrcsDir": "src",
|
|
117
|
+
"android": {
|
|
118
|
+
"javaPackageName": "com.yubikit"
|
|
119
|
+
},
|
|
120
|
+
"ios": {
|
|
121
|
+
"modulesProvider": {
|
|
122
|
+
"YubikitCore": "YubikitCore",
|
|
123
|
+
"YubikitManagement": "YubikitManagement",
|
|
124
|
+
"YubikitOath": "YubikitOath",
|
|
125
|
+
"YubikitPiv": "YubikitPiv",
|
|
126
|
+
"YubikitOpenPgp": "YubikitOpenPgp",
|
|
127
|
+
"YubikitYubiOtp": "YubikitYubiOtp",
|
|
128
|
+
"YubikitFido": "YubikitFido",
|
|
129
|
+
"YubikitSupport": "YubikitSupport"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"create-react-native-library": {
|
|
134
|
+
"type": "turbo-module",
|
|
135
|
+
"languages": "kotlin-objc",
|
|
136
|
+
"tools": [
|
|
137
|
+
"oxlint",
|
|
138
|
+
"jest",
|
|
139
|
+
"lefthook",
|
|
140
|
+
"release-it"
|
|
141
|
+
],
|
|
142
|
+
"version": "0.63.0"
|
|
143
|
+
},
|
|
144
|
+
"react-native-builder-bob": {
|
|
145
|
+
"source": "src",
|
|
146
|
+
"output": "lib",
|
|
147
|
+
"targets": [
|
|
148
|
+
[
|
|
149
|
+
"module",
|
|
150
|
+
{
|
|
151
|
+
"esm": true
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
[
|
|
155
|
+
"typescript",
|
|
156
|
+
{
|
|
157
|
+
"project": "tsconfig.build.json"
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
"release-it": {
|
|
163
|
+
"git": {
|
|
164
|
+
"commitMessage": "chore: release ${version}",
|
|
165
|
+
"tagName": "v${version}"
|
|
166
|
+
},
|
|
167
|
+
"npm": {
|
|
168
|
+
"publish": false
|
|
169
|
+
},
|
|
170
|
+
"github": {
|
|
171
|
+
"release": false
|
|
172
|
+
},
|
|
173
|
+
"plugins": {
|
|
174
|
+
"@release-it/conventional-changelog": {
|
|
175
|
+
"preset": {
|
|
176
|
+
"name": "angular"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
package/src/core.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import NativeYubikitCore from './specs/NativeYubikitCore';
|
|
2
|
+
import type {
|
|
3
|
+
Base64String,
|
|
4
|
+
ConnectionType,
|
|
5
|
+
NfcConfiguration,
|
|
6
|
+
UsbConfiguration,
|
|
7
|
+
YubiKeyDevice,
|
|
8
|
+
YubiKeyEvent,
|
|
9
|
+
} from './types';
|
|
10
|
+
import type { EventSubscription } from 'react-native';
|
|
11
|
+
|
|
12
|
+
export function startUsbDiscovery(config?: UsbConfiguration): void {
|
|
13
|
+
NativeYubikitCore.startUsbDiscovery(config ?? {});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function stopUsbDiscovery(): void {
|
|
17
|
+
NativeYubikitCore.stopUsbDiscovery();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function startNfcDiscovery(config?: NfcConfiguration): void {
|
|
21
|
+
NativeYubikitCore.startNfcDiscovery(config ?? {});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function stopNfcDiscovery(): void {
|
|
25
|
+
NativeYubikitCore.stopNfcDiscovery();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function requestConnection(
|
|
29
|
+
deviceHandle: string,
|
|
30
|
+
connectionType: ConnectionType
|
|
31
|
+
): Promise<string> {
|
|
32
|
+
return NativeYubikitCore.requestConnection(deviceHandle, connectionType);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function sendApdu(
|
|
36
|
+
connectionHandle: string,
|
|
37
|
+
apdu: Base64String
|
|
38
|
+
): Promise<Base64String> {
|
|
39
|
+
return NativeYubikitCore.sendApdu(connectionHandle, apdu);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function closeConnection(connectionHandle: string): void {
|
|
43
|
+
NativeYubikitCore.closeConnection(connectionHandle);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function getDiscoveredDevices(): YubiKeyDevice[] {
|
|
47
|
+
return NativeYubikitCore.getDiscoveredDevices() as YubiKeyDevice[];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function addYubiKeyListener(
|
|
51
|
+
listener: (event: YubiKeyEvent) => void
|
|
52
|
+
): EventSubscription {
|
|
53
|
+
return NativeYubikitCore.onYubiKeyEvent((payload) => {
|
|
54
|
+
listener(payload as unknown as YubiKeyEvent);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { NativeYubikitCore };
|
package/src/fido.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import NativeYubikitFido from './specs/NativeYubikitFido';
|
|
2
|
+
import type {
|
|
3
|
+
Ctap2Info,
|
|
4
|
+
FidoCredentialDescriptor,
|
|
5
|
+
FidoCredentialUserEntity,
|
|
6
|
+
PublicKeyCredential,
|
|
7
|
+
PublicKeyCredentialCreationOptions,
|
|
8
|
+
PublicKeyCredentialRequestOptions,
|
|
9
|
+
} from './types';
|
|
10
|
+
|
|
11
|
+
/** COSE algorithm identifiers (RFC 8152 §8), as used in `pubKeyCredParams`. */
|
|
12
|
+
export const COSE_ALGORITHM = {
|
|
13
|
+
ES256: -7,
|
|
14
|
+
ES384: -35,
|
|
15
|
+
ES512: -36,
|
|
16
|
+
RS256: -257,
|
|
17
|
+
EdDSA: -8,
|
|
18
|
+
} as const;
|
|
19
|
+
|
|
20
|
+
export function getInfo(deviceHandle: string): Promise<Ctap2Info> {
|
|
21
|
+
return NativeYubikitFido.getInfo(deviceHandle) as Promise<Ctap2Info>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function makeCredential(
|
|
25
|
+
deviceHandle: string,
|
|
26
|
+
options: PublicKeyCredentialCreationOptions,
|
|
27
|
+
effectiveDomain: string,
|
|
28
|
+
pin?: string,
|
|
29
|
+
enterpriseAttestation?: number
|
|
30
|
+
): Promise<PublicKeyCredential> {
|
|
31
|
+
return NativeYubikitFido.makeCredential(
|
|
32
|
+
deviceHandle,
|
|
33
|
+
options,
|
|
34
|
+
effectiveDomain,
|
|
35
|
+
pin,
|
|
36
|
+
enterpriseAttestation
|
|
37
|
+
) as Promise<PublicKeyCredential>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function getAssertion(
|
|
41
|
+
deviceHandle: string,
|
|
42
|
+
options: PublicKeyCredentialRequestOptions,
|
|
43
|
+
effectiveDomain: string,
|
|
44
|
+
pin?: string
|
|
45
|
+
): Promise<PublicKeyCredential> {
|
|
46
|
+
return NativeYubikitFido.getAssertion(
|
|
47
|
+
deviceHandle,
|
|
48
|
+
options,
|
|
49
|
+
effectiveDomain,
|
|
50
|
+
pin
|
|
51
|
+
) as Promise<PublicKeyCredential>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function reset(deviceHandle: string): Promise<void> {
|
|
55
|
+
return NativeYubikitFido.reset(deviceHandle);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function getCredentialCount(
|
|
59
|
+
deviceHandle: string,
|
|
60
|
+
pin: string
|
|
61
|
+
): Promise<number> {
|
|
62
|
+
return NativeYubikitFido.getCredentialCount(deviceHandle, pin);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function getRpIdList(
|
|
66
|
+
deviceHandle: string,
|
|
67
|
+
pin: string
|
|
68
|
+
): Promise<string[]> {
|
|
69
|
+
return NativeYubikitFido.getRpIdList(deviceHandle, pin) as Promise<string[]>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function getCredentials(
|
|
73
|
+
deviceHandle: string,
|
|
74
|
+
rpId: string,
|
|
75
|
+
pin: string
|
|
76
|
+
): Promise<
|
|
77
|
+
Array<{
|
|
78
|
+
credential: FidoCredentialDescriptor;
|
|
79
|
+
user: FidoCredentialUserEntity;
|
|
80
|
+
}>
|
|
81
|
+
> {
|
|
82
|
+
return NativeYubikitFido.getCredentials(deviceHandle, rpId, pin) as Promise<
|
|
83
|
+
Array<{
|
|
84
|
+
credential: FidoCredentialDescriptor;
|
|
85
|
+
user: FidoCredentialUserEntity;
|
|
86
|
+
}>
|
|
87
|
+
>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function deleteCredential(
|
|
91
|
+
deviceHandle: string,
|
|
92
|
+
credential: FidoCredentialDescriptor,
|
|
93
|
+
pin: string
|
|
94
|
+
): Promise<void> {
|
|
95
|
+
return NativeYubikitFido.deleteCredential(deviceHandle, credential, pin);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function updateUserInformation(
|
|
99
|
+
deviceHandle: string,
|
|
100
|
+
credential: FidoCredentialDescriptor,
|
|
101
|
+
user: FidoCredentialUserEntity,
|
|
102
|
+
pin: string
|
|
103
|
+
): Promise<void> {
|
|
104
|
+
return NativeYubikitFido.updateUserInformation(
|
|
105
|
+
deviceHandle,
|
|
106
|
+
credential,
|
|
107
|
+
user,
|
|
108
|
+
pin
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { NativeYubikitFido };
|