diff options
Diffstat (limited to 'src/types.ts')
-rw-r--r-- | src/types.ts | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..937cfd2 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,55 @@ +/** + * Options for generating a DigiID URI. + */ +export interface DigiIDUriOptions { + /** The full URL that the user's DigiID wallet will send the verification data back to. */ + callbackUrl: string; + /** A unique, unpredictable nonce (number used once) for this authentication request. If not provided, a secure random one might be generated (implementation specific). */ + nonce?: string; + /** Set to true for testing over HTTP (insecure), defaults to false (HTTPS required). */ + unsecure?: boolean; +} + +/** + * Data structure typically received from the DigiID wallet callback. + */ +export interface DigiIDCallbackData { + /** The DigiByte address used for signing. */ + address: string; + /** The DigiID URI that was originally presented to the user. */ + uri: string; + /** The signature proving ownership of the address, signing the URI. */ + signature: string; +} + +/** + * Options for verifying a DigiID callback. + */ +export interface DigiIDVerifyOptions { + /** The expected callback URL (or parts of it, like domain/path) that should match the one in the received URI. */ + expectedCallbackUrl: string | URL; + /** The specific nonce that was originally generated for this authentication attempt, to prevent replay attacks. */ + expectedNonce?: string; +} + +/** + * Result of a successful DigiID verification. + */ +export interface DigiIDVerificationResult { + /** Indicates the verification was successful. */ + isValid: true; + /** The DigiByte address that was successfully verified. */ + address: string; + /** The nonce extracted from the verified URI. */ + nonce: string; +} + +/** + * Represents an error during DigiID processing. + */ +export class DigiIDError extends Error { + constructor(message: string) { + super(message); + this.name = 'DigiIDError'; + } +} |