From dcc95b2c22f6e881881e52bbf173f05b6241f541 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Thu, 6 Feb 2025 15:48:47 +0400 Subject: [PATCH 01/25] added access token only blacklist --- api/src/services/db/repositories/token.ts | 187 ++++++++++++++++++---- api/src/services/token.ts | 46 +++++- 2 files changed, 205 insertions(+), 28 deletions(-) diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index f48d3c6..272eb98 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -4,15 +4,31 @@ import { Collection, Db, ObjectId } from 'mongodb'; import { RedisClientType } from 'redis'; import { TokenService } from '../../token'; -const COLLECTION_NAME = 'tokens'; +const TOKENS_COLLECTION_NAME = 'tokens'; +const ACCESS_BLACKLIST_COLLECTION_NAME = 'blacklisted_access_tokens'; + +interface BlacklistedAccessTokenDoc { + /** + * The JWT ID of the access token + */ + jti: string; + /** + * When the token was blacklisted + */ + created: Date; + /** + * When the token expires + */ + expiry: Date; +} /** - * Token generation id document. There may be multiple toke - * - * The current one will have blacklisted as false and no expiry - * The previous ones will have an expiry set + * Token generation ID document. There may be multiple tokens per user/device. * - * The blacklisted ones will have blacklisted as true and an expiry + * States: + * - Current token: blacklisted=false, no expiry + * - Previous tokens: blacklisted=false, has expiry + * - Blacklisted tokens: blacklisted=true, has expiry */ interface TokenGenIdDoc { /** @@ -47,10 +63,14 @@ interface TokenGenIdDoc { * included in payload so if server crashes it invalidates all access tokens * that way no revoked access tokens get unrevoked) */ export class TokenRepository { - private readonly collection: Collection; + private readonly tokensCollection: Collection; + private readonly accessBlacklistCollection: Collection; private readonly redis: RedisClientType; - private static readonly BLACKLIST_REDIS_KEY = 'token-blacklist' as const; + private static readonly GENERATION_IDS_BLACKLIST_REDIS_KEY = + 'token-blacklist' as const; + private static readonly ACCESS_BLACKLIST_REDIS_KEY = + 'access-token-blacklist' as const; /** * @param db - The database to use @@ -58,7 +78,12 @@ export class TokenRepository { * @param accessLifespanSeconds - The lifespan of an access token in seconds */ constructor(db: Db, redis: RedisClientType) { - this.collection = db.collection(COLLECTION_NAME); + this.tokensCollection = db.collection( + TOKENS_COLLECTION_NAME, + ); + this.accessBlacklistCollection = db.collection( + ACCESS_BLACKLIST_COLLECTION_NAME, + ); this.redis = redis; } @@ -120,7 +145,7 @@ export class TokenRepository { assert(ObjectId.isValid(userId), 'userId must be a valid ObjectId'); // always get the latest token generation id - const doc = await this.collection.findOne( + const doc = await this.tokensCollection.findOne( { userId: new ObjectId(userId), deviceId, @@ -155,7 +180,7 @@ export class TokenRepository { const expiry = this.tokenExpiry(); // update the latest document - await this.collection.updateMany( + await this.tokensCollection.updateMany( { userId: new ObjectId(userId), $or: [{ expiry: { $exists: false } }, { expiry: undefined }], @@ -174,7 +199,7 @@ export class TokenRepository { blacklisted: false, }; - const result = await this.collection.insertOne(doc); + const result = await this.tokensCollection.insertOne(doc); if (!result.acknowledged) { throw new Error('Failed to update token generation ID'); @@ -184,10 +209,10 @@ export class TokenRepository { } /** - * Adds the token genearation IDs provided in docs to the blacklist cache - * @param docs - The documents to cache + * Adds the token generation IDs provided in docs to the Redis blacklist cache + * @param docs - Array of documents containing tokenGenerationId and expiry to cache */ - private async cacheBlacklist( + private async cacheGenIDBlacklist( docs: Pick[], ) { console.log('adding blacklisted genids to cache'); @@ -205,7 +230,7 @@ export class TokenRepository { } // key format: token-blacklist: - const key = `${TokenRepository.BLACKLIST_REDIS_KEY}:${doc.tokenGenerationId}`; + const key = `${TokenRepository.GENERATION_IDS_BLACKLIST_REDIS_KEY}:${doc.tokenGenerationId}`; // add to redis with TTL using SET // use '1' as the key since we don't care about the value we just want @@ -219,21 +244,23 @@ export class TokenRepository { return; } + /** + * Calculate the expiry date for a token based on the current time and token lifespan + * @returns The calculated expiry date + */ private tokenExpiry = (): Date => new Date(Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000); /** - * Blacklist all a user's token generation ID to prevent all tokens from being - * used including access tokens. This method will also change the user's token - * generation ID. - * - * @param genId - The token generation ID to blacklist + * Blacklist all a user's token generation IDs to prevent all tokens from being + * used including access tokens. + * @param userId - The ID of the user whose tokens should be blacklisted */ public async blacklistTokenGenerationIds(userId: string): Promise { const expiry = this.tokenExpiry(); // begin blacklisting all tokens in the db but don't wait - const dbPromise = this.collection + const dbPromise = this.tokensCollection .updateMany( { userId: new ObjectId(userId), blacklisted: false }, [ @@ -263,26 +290,132 @@ export class TokenRepository { }); // get all of them as well to blacklist in redis - const docs = await this.collection + const docs = await this.tokensCollection .find( { userId: new ObjectId(userId) }, { projection: { tokenGenerationId: 1, expiry: 1 } }, ) .toArray(); - await Promise.all([this.cacheBlacklist(docs), dbPromise]); + await Promise.all([this.cacheGenIDBlacklist(docs), dbPromise]); } + /** + * Check if a token generation ID is blacklisted in the Redis cache + * @param genId - The token generation ID to check + * @returns True if the token generation ID is blacklisted in cache, false otherwise + */ private async isTokenGenerationIdBlacklistedCache( genId: string, ): Promise { const result = await this.redis.get( - `${TokenRepository.BLACKLIST_REDIS_KEY}:${genId}`, + `${TokenRepository.GENERATION_IDS_BLACKLIST_REDIS_KEY}:${genId}`, ); return result !== null; } + /** + * Blacklist a specific access token by its JTI. This will add the token to both + * the database and Redis cache. + * @param jti - The JWT ID of the access token to blacklist + * @param expirySeconds - When the token expires in seconds since epoch + */ + public async blacklistAccessToken( + jti: string, + expirySeconds: number, + ): Promise { + const ttlSeconds = expirySeconds - Math.floor(Date.now() / 1000); + + // Don't blacklist if already expired + if (ttlSeconds <= 0) { + return; + } + + const expiry = new Date(expirySeconds * 1000); + + // Add to MongoDB + const doc: BlacklistedAccessTokenDoc = { + jti, + created: new Date(), + expiry, + }; + + const [dbResult] = await Promise.all([ + // Add to MongoDB + this.accessBlacklistCollection.insertOne(doc), + // Add to Redis cache + this.cacheAccessBlacklist(jti, expirySeconds), + ]); + + if (!dbResult.acknowledged) { + throw new Error('Failed to blacklist access token in database'); + } + } + + /** + * Add an access token to the Redis blacklist cache + * @param jti - The JWT ID of the access token to blacklist + * @param expirySeconds - When the token expires in seconds since epoch + */ + private async cacheAccessBlacklist( + jti: string, + expirySeconds: number, + ): Promise { + const ttlSeconds = expirySeconds - Math.floor(Date.now() / 1000); + + // Don't blacklist if already expired + if (ttlSeconds <= 0) { + return; + } + + const key = `${TokenRepository.ACCESS_BLACKLIST_REDIS_KEY}:${jti}`; + await this.redis.set(key, '1', { + EX: ttlSeconds, + }); + } + + /** + * Check if an access token is blacklisted by checking both Redis cache and MongoDB + * @param jti - The JWT ID to check + * @returns True if the token is blacklisted, false otherwise + */ + public async isAccessTokenBlacklisted(jti: string): Promise { + try { + // Check Redis cache first + const existsInCache = await this.isAccessTokenBlacklistedCache(jti); + if (existsInCache) { + return true; + } + } catch (e) { + console.error('Error checking redis cache for access token blacklist', e); + } + + // Not found in Redis, check MongoDB + const doc = await this.accessBlacklistCollection.findOne({ jti }); + + if (doc === null) { + return false; + } + + // Found in DB, add to Redis cache to avoid future cache misses + // Don't await as this is non-blocking + this.cacheAccessBlacklist(jti, Math.floor(doc.expiry.getTime() / 1000)); + + return true; + } + + /** + * Check if an access token is blacklisted by its JTI + * @param jti - The JWT ID to check + * @returns True if the token is blacklisted, false otherwise + */ + private async isAccessTokenBlacklistedCache(jti: string): Promise { + const key = `${TokenRepository.ACCESS_BLACKLIST_REDIS_KEY}:${jti}`; + const result = await this.redis.get(key); + return result !== null; + } + /** * Checks if a token generation ID is blacklisted * @param genId - The generation id to check @@ -302,7 +435,7 @@ export class TokenRepository { } // not found in redis, check db - const doc = await this.collection.findOne({ + const doc = await this.tokensCollection.findOne({ tokenGenerationId: genId, blacklisted: true, // fewer blacklisted tokens, faster query }); @@ -315,7 +448,7 @@ export class TokenRepository { // add to redis cache to avoid another cache miss // this should be non blocking so don't await - this.cacheBlacklist([doc]); + this.cacheGenIDBlacklist([doc]); // and return return true; diff --git a/api/src/services/token.ts b/api/src/services/token.ts index ee67f9e..1fc9309 100644 --- a/api/src/services/token.ts +++ b/api/src/services/token.ts @@ -370,7 +370,7 @@ export class TokenService { const payload = this.parseToken(result); - // check token isn't blacklisted + // check token generation ID isn't blacklisted const blacklisted = await this.db.tokenRepository.isTokenGenerationIdBlacklisted( payload.generationId, @@ -379,6 +379,15 @@ export class TokenService { return { valid: false }; } + // For access tokens, also check if the specific token is blacklisted + if (payload.type === TokenTypeSchema.enum.ACCESS) { + const tokenBlacklisted = + await this.db.tokenRepository.isAccessTokenBlacklisted(payload.jti); + if (tokenBlacklisted) { + return { valid: false }; + } + } + return { valid: true, payload }; } catch (error) { return { valid: false }; @@ -541,4 +550,39 @@ export class TokenService { // add to blacklist await this.db.tokenRepository.blacklistTokenGenerationIds(userId); } + + /** + * Blacklist a specific access token. This will prevent the token from being used + * for any future requests, but won't affect other tokens generated with the same + * refresh token. + * + * This is useful for scenarios where you want to revoke a single access token + * without affecting other sessions, such as when a user logs out of a specific device. + * + * @param accessToken - The access token to blacklist + * @returns Promise that resolves when the token has been blacklisted + * @throws InvalidTokenError if the token is invalid or not an access token + */ + public async blacklistAccessToken(accessToken: string): Promise { + // Verify and decode the token + const { valid, payload } = await this.verifyToken(accessToken, true); + + if (!valid || !payload) { + throw new InvalidTokenError('Invalid access token'); + } + + // Ensure it's an access token + if (payload.type !== TokenTypeSchema.enum.ACCESS) { + throw new InvalidTokenError('Token is not an access token'); + } + + // Get expiry time from the payload + const exp = (payload as jwt.JwtPayload).exp; + if (!exp) { + throw new InvalidTokenError('Token has no expiry time'); + } + + // Blacklist the token + await this.db.tokenRepository.blacklistAccessToken(payload.jti, exp); + } } From 57cd76fb0177cce9f90b26c0e390027502673984 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Fri, 7 Feb 2025 11:00:19 +0400 Subject: [PATCH 02/25] added mfa token --- api/README.md | 2 + api/src/schemas/tokens.ts | 27 ++++- api/src/services/db/repositories/token.ts | 132 +++++++++++++++++++-- api/src/services/token.ts | 138 +++++++++++++++++++++- 4 files changed, 282 insertions(+), 17 deletions(-) diff --git a/api/README.md b/api/README.md index c6bd019..d78e723 100644 --- a/api/README.md +++ b/api/README.md @@ -95,6 +95,8 @@ field until rotations are implemented. **`AUTH_TOKEN_REFRESH_EXPIRY_SECONDS`:** The time in seconds for the refresh token expiry (how long it lives). The refresh token is used to refresh/create new access tokens. +**`AUTH_TOKEN_MFA_EXPIRY_SECONDS`:** The time in seconds for the MFA token to expire (how long it lives). This should be a very short duration, typically around 5 minutes. + **`MONGODB_URL`:** The MongoDB connection URL **`REDIS_URL`:** The Redis cache server URL diff --git a/api/src/schemas/tokens.ts b/api/src/schemas/tokens.ts index 20d246e..f9c875c 100644 --- a/api/src/schemas/tokens.ts +++ b/api/src/schemas/tokens.ts @@ -13,15 +13,24 @@ export const TokenTypeSchema = z.enum(['ACCESS', 'REFRESH', 'ID']); export type TokenType = z.infer; -export const TokenPayloadSchema = z.object({ +export const mfaTokenTypeSchema = z.literal('MFA'); + +export type MFATokenType = z.infer; + +export const commonTokenInfoSchema = z.object({ /** The user ID of the user the token is for */ userId: z.string(), /** When the token was created */ iat: z.number(), - /** The token's generation id */ - generationId: z.string(), /** The expiration time of the token */ exp: z.number(), +}); + +export type CommonTokenInfo = z.infer; + +export const TokenPayloadSchema = commonTokenInfoSchema.extend({ + /** The token's generation id */ + generationId: z.string(), /** The type of the token */ type: TokenTypeSchema, }); @@ -61,6 +70,18 @@ export const IDTokenPayloadSchema = TokenPayloadSchema.extend({ export type IDTokenPayload = z.infer; +// mfa token +export const mfaTokenPayloadSchema = commonTokenInfoSchema.extend({ + /** The token's type */ + type: mfaTokenTypeSchema, + /** The token's unique identifier. */ + jti: z.string().min(1), + /** The device ID of the device the token is for */ + deviceId: z.string().min(1), +}); + +export type MFATokenPayload = z.infer; + /** * An error that is thrown when a token is invalid or malformed */ diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index 272eb98..344fede 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -4,9 +4,9 @@ import { Collection, Db, ObjectId } from 'mongodb'; import { RedisClientType } from 'redis'; import { TokenService } from '../../token'; -const TOKENS_COLLECTION_NAME = 'tokens'; -const ACCESS_BLACKLIST_COLLECTION_NAME = 'blacklisted_access_tokens'; - +/** + * Document representing a blacklisted access token in the database + */ interface BlacklistedAccessTokenDoc { /** * The JWT ID of the access token @@ -22,6 +22,20 @@ interface BlacklistedAccessTokenDoc { expiry: Date; } +/** + * Document representing a blacklisted MFA token in the database + */ +interface BlacklistedMFAToken { + /** + * The JWT ID of the MFA token + */ + jti: string; + /** + * When the token expires + */ + expiry: Date; +} + /** * Token generation ID document. There may be multiple tokens per user/device. * @@ -63,15 +77,22 @@ interface TokenGenIdDoc { * included in payload so if server crashes it invalidates all access tokens * that way no revoked access tokens get unrevoked) */ export class TokenRepository { - private readonly tokensCollection: Collection; - private readonly accessBlacklistCollection: Collection; - private readonly redis: RedisClientType; + protected readonly tokensCollection: Collection; + protected readonly accessBlacklistCollection: Collection; + protected readonly mfaBlacklistCollection: Collection; + protected readonly redis: RedisClientType; + + protected static readonly TOKENS_COLLECTION_NAME = 'tokens'; + protected static readonly ACCESS_BLACKLIST_COLLECTION_NAME = + 'blacklisted_access_tokens'; - private static readonly GENERATION_IDS_BLACKLIST_REDIS_KEY = + protected static readonly GENERATION_IDS_BLACKLIST_REDIS_KEY = 'token-blacklist' as const; - private static readonly ACCESS_BLACKLIST_REDIS_KEY = + protected static readonly ACCESS_BLACKLIST_REDIS_KEY = 'access-token-blacklist' as const; + protected static readonly MFA_BLACKLIST_KEY = 'mfa-token-blacklist' as const; + /** * @param db - The database to use * @param redis - The redis client to use @@ -79,10 +100,13 @@ export class TokenRepository { */ constructor(db: Db, redis: RedisClientType) { this.tokensCollection = db.collection( - TOKENS_COLLECTION_NAME, + TokenRepository.TOKENS_COLLECTION_NAME, ); this.accessBlacklistCollection = db.collection( - ACCESS_BLACKLIST_COLLECTION_NAME, + TokenRepository.ACCESS_BLACKLIST_COLLECTION_NAME, + ); + this.mfaBlacklistCollection = db.collection( + TokenRepository.MFA_BLACKLIST_KEY, ); this.redis = redis; } @@ -453,4 +477,92 @@ export class TokenRepository { // and return return true; } + + /** + * Blacklist an MFA token by adding it to both Redis cache and MongoDB storage + * @param jti - The JWT ID of the MFA token to blacklist + * @param expirySeconds - When the token expires in seconds since epoch + * @throws {Error} If the token fails to be blacklisted in the database + */ + public async blacklistMFA(jti: string, expirySeconds: number): Promise { + const expiry = new Date(expirySeconds * 1000); + // calculate TTL + const ttlSeconds = Math.ceil( + ((expiry ?? TokenService.MFA_TOKEN_LIFESPAN_SECONDS).getTime() - + Date.now()) / + 1000, + ); + + // don't add it if it's already expired + if (ttlSeconds <= 0) { + return; + } + + const doc: BlacklistedMFAToken = { + jti, + expiry, + }; + + // cache in Redis + const key = `${TokenRepository.ACCESS_BLACKLIST_REDIS_KEY}:${jti}`; + const redisPromise = this.redis + .set(key, '1', { + EX: ttlSeconds, + }) + .catch((e) => console.warn('Error caching MFA token blacklist', e)); + + // add to db in case Redis fails + const dbPromise = this.mfaBlacklistCollection + .insertOne(doc) + .then((result) => { + return result.acknowledged; + }); + + const [dbResult] = await Promise.all([dbPromise, redisPromise]); + + if (!dbResult) { + throw new Error('Failed to blacklist MFA token in database'); + } + } + + /** + * Check if an MFA token is blacklisted by its JTI + * @param jti - The JWT ID to check + * @returns True if the token is blacklisted, false otherwise + */ + public async isMFATokenBlacklisted(jti: string): Promise { + try { + // Check Redis cache first + const key = `${TokenRepository.MFA_BLACKLIST_KEY}:${jti}`; + const existsInCache = await this.redis.get(key); + if (existsInCache !== null) { + return true; + } + } catch (e) { + console.error('Error checking redis cache for MFA token blacklist', e); + } + + // Not found in Redis, check MongoDB + const doc = await this.mfaBlacklistCollection.findOne({ jti }); + + if (doc === null) { + return false; + } + + // Found in DB, add to Redis cache to avoid future cache misses + // Don't await as this is non-blocking + const ttlSeconds = Math.ceil((doc.expiry.getTime() - Date.now()) / 1000); + if (ttlSeconds > 0) { + const key = `${TokenRepository.MFA_BLACKLIST_KEY}:${jti}`; + this.redis + .set(key, '1', { + EX: ttlSeconds, + }) + .catch((e) => + console.warn('Error caching MFA token blacklist status', e), + ); + } + + return true; + } } diff --git a/api/src/services/token.ts b/api/src/services/token.ts index 1fc9309..2087505 100644 --- a/api/src/services/token.ts +++ b/api/src/services/token.ts @@ -10,13 +10,16 @@ import { import { type AccessTokenPayload, AccessTokenPayloadSchema, + CommonTokenInfo, type IDTokenPayload, IDTokenPayloadSchema, InvalidTokenError, type JWTSecret, + MFATokenPayload, + mfaTokenPayloadSchema, + mfaTokenTypeSchema, type RefreshTokenPayload, RefreshTokenPayloadSchema, - TokenPayload, TokenTypeSchema, } from '../schemas/tokens'; import { DatabaseService } from './db/db'; @@ -26,6 +29,7 @@ import { DatabaseService } from './db/db'; export class TokenService { private static _ACCESS_TOKEN_LIFESPAN_SECONDS: number; private static _REFRESH_TOKEN_LIFESPAN_SECONDS: number; + private static _MFA_TOKEN_LIFESPAN_SECONDS: number; public static get ACCESS_TOKEN_LIFESPAN_SECONDS(): number { if (this._ACCESS_TOKEN_LIFESPAN_SECONDS === undefined) { @@ -58,6 +62,21 @@ export class TokenService { return this._REFRESH_TOKEN_LIFESPAN_SECONDS; } + public static get MFA_TOKEN_LIFESPAN_SECONDS(): number { + if (this._MFA_TOKEN_LIFESPAN_SECONDS === undefined) { + this._MFA_TOKEN_LIFESPAN_SECONDS = parseInt( + process.env.AUTH_TOKEN_MFA_EXPIRY_SECONDS!, + ); + } + + if (isNaN(this._MFA_TOKEN_LIFESPAN_SECONDS)) { + throw new Error( + `Invalid MFA token expiry time: ${process.env.AUTH_TOKEN_MFA_EXPIRY_SECONDS}`, + ); + } + return this._MFA_TOKEN_LIFESPAN_SECONDS; + } + private readonly db: DatabaseService; constructor() { @@ -101,8 +120,8 @@ export class TokenService { * @param encrypt - Whether to encrypt the token * @returns The generated JWT */ - private async generateToken( - payload: Omit, + private async generateToken( + payload: Omit, secret: JWTSecret, lifetime: number, encrypt: boolean, @@ -325,7 +344,7 @@ export class TokenService { * @returns The token's payload * @throws An error if the token is invalid or is not a valid token type */ - private decodeToken( + private async decodeToken( token: string, ): Promise { // Decrypt the token first @@ -585,4 +604,115 @@ export class TokenService { // Blacklist the token await this.db.tokenRepository.blacklistAccessToken(payload.jti, exp); } + + /** + * Creates a new MFA token with the provided payload + * @param payload - The MFA token payload to include in the JWT + * @param secret - The secret to sign the JWT with + * @returns The generated MFA token + */ + private async generateMFAToken( + payload: Omit, + secret: JWTSecret, + ): Promise { + return await this.generateToken( + payload, + secret, + TokenService.MFA_TOKEN_LIFESPAN_SECONDS, + true, // Always encrypt MFA tokens + ); + } + + /** + * Creates a new MFA token for a user + * @param userId - The user's ID to create the token for + * @param deviceId - The device ID to create the token for + * @returns The generated MFA token + */ + public async createMFAToken( + userId: string, + deviceId: string, + ): Promise { + const created = new Date(); + const createdSeconds = Math.floor(created.getTime() / 1000); + + const mfaTokenPayload: Omit = { + type: 'MFA', + userId, + deviceId, + iat: createdSeconds, + jti: randomUUID(), + }; + + const secret: JWTSecret = { + secret: process.env.JWT_SECRET!, // TODO: generate random one + secretId: '1', // TODO: rotate keys and store in DB + }; + + const token = await this.generateMFAToken(mfaTokenPayload, secret); + + // encrypt + return await this.encryptToken(token); + } + + /** + * Verify and decode an MFA token. This method will automatically blacklist + * the MFA token if it's valid so that it can't be used again + * @param token - The MFA token to verify + * @returns The decoded token payload if valid + * @throws InvalidTokenError if the token is invalid or has been blacklisted + */ + public async verifyMFAToken(token: string): Promise { + // Decrypt the token first + const decryptedToken = await this.decryptToken(token); + + // Verify the decrypted token + const result = await new Promise( + (resolve, reject) => { + jwt.verify( + decryptedToken, + process.env.JWT_SECRET!, + (err: Error | null, decoded: any) => { + if (err) reject(err); + else resolve(decoded); + }, + ); + }, + ); + const { success, data } = mfaTokenPayloadSchema.safeParse(result); + + if (!success) { + throw new InvalidTokenError('Invalid MFA token'); + } + + if (data.type !== mfaTokenTypeSchema.value) { + throw new InvalidTokenError('Token is not an MFA token'); + } + + // check token generation ID isn't blacklisted + const blacklisted = await this.db.tokenRepository.isMFATokenBlacklisted( + data.jti, + ); + if (blacklisted) { + throw new InvalidTokenError('MFA token has been blacklisted'); + } + + // valid, blacklist so it can't be used again + await this.blacklistMFAToken(data); + + return data; + } + + /** + * Blacklist an MFA token to prevent it from being used again + * @param token - The MFA token to blacklist + */ + private async blacklistMFAToken(token: MFATokenPayload): Promise { + const exp = token.exp; + if (!exp) { + throw new InvalidTokenError('Token has no expiry time'); + } + + await this.db.tokenRepository.blacklistMFA(token.jti, exp); + } } From 1b746fc013a59aff88e4a2e266344020665b093c Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sat, 22 Feb 2025 12:28:13 +0400 Subject: [PATCH 03/25] small refactor --- api/src/controllers/.gitkeep | 0 api/src/controllers/mfa.ts | 6 +++--- api/src/index.ts | 4 ++-- api/src/middleware/auth.ts | 2 +- api/src/routes/.gitkeep | 0 api/src/schemas/.gitkeep | 0 api/src/schemas/auth.ts | 15 --------------- api/src/schemas/{ => auth}/mfa.ts | 0 api/src/schemas/{ => auth}/tokens.ts | 0 api/src/schemas/{ => auth}/user.ts | 14 ++++++++++++++ api/src/services/.gitkeep | 0 api/src/services/{ => auth}/mfa.ts | 2 +- api/src/services/{ => auth}/token.ts | 0 api/src/services/db/repositories/token.ts | 2 +- api/src/services/db/repositories/user.ts | 2 +- 15 files changed, 23 insertions(+), 24 deletions(-) delete mode 100644 api/src/controllers/.gitkeep delete mode 100644 api/src/routes/.gitkeep delete mode 100644 api/src/schemas/.gitkeep delete mode 100644 api/src/schemas/auth.ts rename api/src/schemas/{ => auth}/mfa.ts (100%) rename api/src/schemas/{ => auth}/tokens.ts (100%) rename api/src/schemas/{ => auth}/user.ts (69%) delete mode 100644 api/src/services/.gitkeep rename api/src/services/{ => auth}/mfa.ts (98%) rename api/src/services/{ => auth}/token.ts (100%) diff --git a/api/src/controllers/.gitkeep b/api/src/controllers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/api/src/controllers/mfa.ts b/api/src/controllers/mfa.ts index 44e5089..917eaec 100644 --- a/api/src/controllers/mfa.ts +++ b/api/src/controllers/mfa.ts @@ -1,7 +1,7 @@ import { Response } from 'express'; -import { AuthenticatedRequest } from '../schemas/auth'; -import { DatabaseService, MFAService } from '../services/mfa'; -import { MFAToken, mfaTokenSchema } from '../schemas/mfa'; +import { DatabaseService, MFAService } from '../services/auth/mfa'; +import { MFAToken, mfaTokenSchema } from '../schemas/auth/mfa'; +import { AuthenticatedRequest } from '../schemas/auth/user'; // TODO: proper error handling (maybe implement custom error classes) export class MFAController { diff --git a/api/src/index.ts b/api/src/index.ts index 17bcb3b..ffd2396 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -4,8 +4,8 @@ import cookieParser from 'cookie-parser'; import { logMiddleware } from './middleware/log'; import { authRouter } from './routes/auth'; import { DatabaseService } from './services/db/db'; -import { TokenService } from './services/token'; -import { User, UserSchema } from './schemas/user'; +import { TokenService } from './services/auth/token'; +import { User, UserSchema } from './schemas/auth/user'; dotenv.config(); diff --git a/api/src/middleware/auth.ts b/api/src/middleware/auth.ts index 8ddfc43..806f279 100644 --- a/api/src/middleware/auth.ts +++ b/api/src/middleware/auth.ts @@ -1,5 +1,5 @@ import { Response, NextFunction } from 'express'; -import { AuthenticatedRequest, requestUserSchema } from '../schemas/auth'; +import { AuthenticatedRequest, requestUserSchema } from '../schemas/auth/user'; // TODO: implement requireAuth middleware export const requireAuth = ( diff --git a/api/src/routes/.gitkeep b/api/src/routes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/api/src/schemas/.gitkeep b/api/src/schemas/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/api/src/schemas/auth.ts b/api/src/schemas/auth.ts deleted file mode 100644 index a65cf56..0000000 --- a/api/src/schemas/auth.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Request } from 'express'; -import { z } from 'zod'; - -export const requestUserSchema = z.object({ - id: z.string(), - email: z.string().email(), - // ... -}); - -type RequestUser = z.infer; - -// TODO: replace with actual user object -export interface AuthenticatedRequest extends Request { - user?: RequestUser | undefined; -} diff --git a/api/src/schemas/mfa.ts b/api/src/schemas/auth/mfa.ts similarity index 100% rename from api/src/schemas/mfa.ts rename to api/src/schemas/auth/mfa.ts diff --git a/api/src/schemas/tokens.ts b/api/src/schemas/auth/tokens.ts similarity index 100% rename from api/src/schemas/tokens.ts rename to api/src/schemas/auth/tokens.ts diff --git a/api/src/schemas/user.ts b/api/src/schemas/auth/user.ts similarity index 69% rename from api/src/schemas/user.ts rename to api/src/schemas/auth/user.ts index 8683587..cf5caec 100644 --- a/api/src/schemas/user.ts +++ b/api/src/schemas/auth/user.ts @@ -1,3 +1,4 @@ +import { Request } from 'express'; import { ObjectId } from 'mongodb'; import { z } from 'zod'; @@ -25,3 +26,16 @@ export class InvalidUserError extends Error { Object.setPrototypeOf(this, InvalidUserError.prototype); } } + +export const requestUserSchema = z.object({ + id: z.string(), + email: z.string().email(), + // ... +}); + +type RequestUser = z.infer; + +// TODO: replace with actual user object +export interface AuthenticatedRequest extends Request { + user?: RequestUser | undefined; +} diff --git a/api/src/services/.gitkeep b/api/src/services/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/api/src/services/mfa.ts b/api/src/services/auth/mfa.ts similarity index 98% rename from api/src/services/mfa.ts rename to api/src/services/auth/mfa.ts index 1bce911..bc667ca 100644 --- a/api/src/services/mfa.ts +++ b/api/src/services/auth/mfa.ts @@ -1,5 +1,5 @@ import * as authenticator from 'authenticator'; -import { MFAToken } from '../schemas/mfa'; +import { MFAToken } from '../../schemas/auth/mfa'; // TODO: replace temp classes with actual classes diff --git a/api/src/services/token.ts b/api/src/services/auth/token.ts similarity index 100% rename from api/src/services/token.ts rename to api/src/services/auth/token.ts diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index 344fede..f71ccc5 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -2,7 +2,7 @@ import assert from 'assert'; import { randomUUID } from 'crypto'; import { Collection, Db, ObjectId } from 'mongodb'; import { RedisClientType } from 'redis'; -import { TokenService } from '../../token'; +import { TokenService } from '../../auth/token'; /** * Document representing a blacklisted access token in the database diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 032aa0d..3fcd141 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -1,6 +1,6 @@ import assert from 'assert'; import { Collection, Db, ObjectId } from 'mongodb'; -import { User } from '../../../schemas/user'; +import { User } from '../../../schemas/auth/user'; import { randomInt } from 'crypto'; import { RedisClientType } from 'redis'; From 0773df2a50d8b9185d61b6ed3cfb1892482122a3 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sat, 22 Feb 2025 13:59:44 +0400 Subject: [PATCH 04/25] stash --- api/src/controllers/auth.ts | 1 + api/src/controllers/mfa.ts | 318 +++++++++++------------ api/src/index.ts | 3 - api/src/middleware/auth.ts | 52 ++-- api/src/routes/auth.ts | 3 - api/src/routes/mfa.ts | 40 +-- api/src/schemas/auth/user.ts | 60 ++--- api/src/services/auth/auth.ts | 8 + api/src/services/db/repositories/user.ts | 62 ++--- 9 files changed, 273 insertions(+), 274 deletions(-) create mode 100644 api/src/controllers/auth.ts create mode 100644 api/src/services/auth/auth.ts diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts new file mode 100644 index 0000000..72a752b --- /dev/null +++ b/api/src/controllers/auth.ts @@ -0,0 +1 @@ +export class AuthController {} diff --git a/api/src/controllers/mfa.ts b/api/src/controllers/mfa.ts index 917eaec..d5bc5ae 100644 --- a/api/src/controllers/mfa.ts +++ b/api/src/controllers/mfa.ts @@ -1,159 +1,159 @@ -import { Response } from 'express'; -import { DatabaseService, MFAService } from '../services/auth/mfa'; -import { MFAToken, mfaTokenSchema } from '../schemas/auth/mfa'; -import { AuthenticatedRequest } from '../schemas/auth/user'; - -// TODO: proper error handling (maybe implement custom error classes) -export class MFAController { - public static async initMFA(req: AuthenticatedRequest, res: Response) { - if (!req.user) { - console.log('Unauthorized'); - - res.status(401).send('Unauthorized'); - return; - } - - const db = new DatabaseService(); - const mfa = new MFAService(db); - - try { - const result = await mfa.initUserMFA(req.user.id); - console.log('MFA setup initiated'); - - res.status(201).send(result); - return; - } catch (e: any) { - console.log('Internal Server Error:', e.message); - res.status(500).send({ - error: 'Internal Server Error', - message: 'Please try again later', - }); - return; - } - } - - public static async confirmMFA(req: AuthenticatedRequest, res: Response) { - if (!req.user) { - console.log('Unauthorized'); - - res - .status(401) - .send({ error: 'Unauthorized', message: 'User must be authenticated' }); - return; - } - let mfaToken: MFAToken; - try { - //const userToken = req.body.token; - mfaToken = mfaTokenSchema.parse(req.body.token); - } catch (_) { - console.log('Invalid token'); - - res.status(400).send({ - error: 'Invalid token', - message: 'Token must be a 6 digit number', - }); - return; - } - - const db = new DatabaseService(); - const mfa = new MFAService(db); - - try { - const confirmed = await mfa.finishInitMFASetup(req.user.id, mfaToken); - if (confirmed) { - console.log('MFA setup confirmed'); - - res.status(200).send({ - message: 'MFA setup confirmed', - }); - } else { - console.log('MFA setup not confirmed because code is incorrect'); - res.status(400).send({ - error: 'Incorrect Code', - message: 'Please enter the correct code', - }); - } - - return; - } catch (e: any) { - console.log('Internal Server Error:', e.message); - - res.status(500).send({ - error: 'Internal Server Error', - message: 'Please try again later', - }); - return; - } - } - - public static async verifyMFA(req: AuthenticatedRequest, res: Response) { - if (!req.user) { - console.log('Unauthorized'); - - res - .status(401) - .send({ error: 'Unauthorized', message: 'User must be authenticated' }); - return; - } - let mfaToken: MFAToken; - try { - mfaToken = mfaTokenSchema.parse(req.body.token); - } catch (_) { - console.log('Invalid token'); - - res.status(400).send({ - error: 'Invalid token', - message: 'Token must be a 6 digit number', - }); - return; - } - const db = new DatabaseService(); - const mfa = new MFAService(db); - try { - const confirmed = await mfa.verifyMFA(req.user.id, mfaToken); - - // TODO: update this to be integrated with authentication instead of just - // returning true/false - - if (confirmed) { - console.log('MFA code correct'); - - res.status(200).send(); - return; - } else { - console.log('MFA code incorrect'); - res.status(400).send({ - error: 'Incorrect Code', - message: 'Please enter the correct code', - }); - return; - } - } catch (e: any) { - console.log('Internal Server Error:', e.message); - res.status(500).send({ - error: 'Internal Server Error', - message: e.message, - }); - return; - } - } - - public static async testRoute(req: AuthenticatedRequest, res: Response) { - const userId = req.params.id; - - const db = new DatabaseService(); - const mfa = new MFAService(db); - - const result = await db.userRepository.getUserMFAformattedKey( - userId.toString(), - ); - - if (!result) { - res.status(404).send('User not found'); - return; - } - - res.status(200).send(result); - return; - } -} +//import { Response } from 'express'; +//import { DatabaseService, MFAService } from '../services/auth/mfa'; +//import { MFAToken, mfaTokenSchema } from '../schemas/auth/mfa'; +//import { AuthenticatedRequest } from '../schemas/auth/user'; +// +//// TODO: proper error handling (maybe implement custom error classes) +//export class MFAController { +// public static async initMFA(req: AuthenticatedRequest, res: Response) { +// if (!req.user) { +// console.log('Unauthorized'); +// +// res.status(401).send('Unauthorized'); +// return; +// } +// +// const db = new DatabaseService(); +// const mfa = new MFAService(db); +// +// try { +// const result = await mfa.initUserMFA(req.user.id); +// console.log('MFA setup initiated'); +// +// res.status(201).send(result); +// return; +// } catch (e: any) { +// console.log('Internal Server Error:', e.message); +// res.status(500).send({ +// error: 'Internal Server Error', +// message: 'Please try again later', +// }); +// return; +// } +// } +// +// public static async confirmMFA(req: AuthenticatedRequest, res: Response) { +// if (!req.user) { +// console.log('Unauthorized'); +// +// res +// .status(401) +// .send({ error: 'Unauthorized', message: 'User must be authenticated' }); +// return; +// } +// let mfaToken: MFAToken; +// try { +// //const userToken = req.body.token; +// mfaToken = mfaTokenSchema.parse(req.body.token); +// } catch (_) { +// console.log('Invalid token'); +// +// res.status(400).send({ +// error: 'Invalid token', +// message: 'Token must be a 6 digit number', +// }); +// return; +// } +// +// const db = new DatabaseService(); +// const mfa = new MFAService(db); +// +// try { +// const confirmed = await mfa.finishInitMFASetup(req.user.id, mfaToken); +// if (confirmed) { +// console.log('MFA setup confirmed'); +// +// res.status(200).send({ +// message: 'MFA setup confirmed', +// }); +// } else { +// console.log('MFA setup not confirmed because code is incorrect'); +// res.status(400).send({ +// error: 'Incorrect Code', +// message: 'Please enter the correct code', +// }); +// } +// +// return; +// } catch (e: any) { +// console.log('Internal Server Error:', e.message); +// +// res.status(500).send({ +// error: 'Internal Server Error', +// message: 'Please try again later', +// }); +// return; +// } +// } +// +// public static async verifyMFA(req: AuthenticatedRequest, res: Response) { +// if (!req.user) { +// console.log('Unauthorized'); +// +// res +// .status(401) +// .send({ error: 'Unauthorized', message: 'User must be authenticated' }); +// return; +// } +// let mfaToken: MFAToken; +// try { +// mfaToken = mfaTokenSchema.parse(req.body.token); +// } catch (_) { +// console.log('Invalid token'); +// +// res.status(400).send({ +// error: 'Invalid token', +// message: 'Token must be a 6 digit number', +// }); +// return; +// } +// const db = new DatabaseService(); +// const mfa = new MFAService(db); +// try { +// const confirmed = await mfa.verifyMFA(req.user.id, mfaToken); +// +// // TODO: update this to be integrated with authentication instead of just +// // returning true/false +// +// if (confirmed) { +// console.log('MFA code correct'); +// +// res.status(200).send(); +// return; +// } else { +// console.log('MFA code incorrect'); +// res.status(400).send({ +// error: 'Incorrect Code', +// message: 'Please enter the correct code', +// }); +// return; +// } +// } catch (e: any) { +// console.log('Internal Server Error:', e.message); +// res.status(500).send({ +// error: 'Internal Server Error', +// message: e.message, +// }); +// return; +// } +// } +// +// public static async testRoute(req: AuthenticatedRequest, res: Response) { +// const userId = req.params.id; +// +// const db = new DatabaseService(); +// const mfa = new MFAService(db); +// +// const result = await db.userRepository.getUserMFAformattedKey( +// userId.toString(), +// ); +// +// if (!result) { +// res.status(404).send('User not found'); +// return; +// } +// +// res.status(200).send(result); +// return; +// } +//} diff --git a/api/src/index.ts b/api/src/index.ts index ffd2396..09c323d 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -3,9 +3,6 @@ import dotenv from 'dotenv'; import cookieParser from 'cookie-parser'; import { logMiddleware } from './middleware/log'; import { authRouter } from './routes/auth'; -import { DatabaseService } from './services/db/db'; -import { TokenService } from './services/auth/token'; -import { User, UserSchema } from './schemas/auth/user'; dotenv.config(); diff --git a/api/src/middleware/auth.ts b/api/src/middleware/auth.ts index 806f279..21b4329 100644 --- a/api/src/middleware/auth.ts +++ b/api/src/middleware/auth.ts @@ -1,33 +1,33 @@ -import { Response, NextFunction } from 'express'; -import { AuthenticatedRequest, requestUserSchema } from '../schemas/auth/user'; +import { Request, Response, NextFunction } from 'express'; // TODO: implement requireAuth middleware export const requireAuth = ( - req: AuthenticatedRequest, + req: Request, res: Response, next: NextFunction, ) => { - // TODO: check for cookies/auth header - const user = req.body.user; - - if (!user) { - console.log('no user found'); - - res.status(401).json({ message: 'Unauthorized' }); - return; - } - - const parseUserResult = requestUserSchema.safeParse(user); - - if (!parseUserResult.success) { - console.log('invalid user found'); - - res.status(401).json({ message: 'Unauthorized' }); - return; - } - - req.user = parseUserResult.data; - - // check cookies for auth tokens - return next(); + //// TODO: check for cookies/auth header + //const user = req.body.user; + // + //if (!user) { + // console.log('no user found'); + // + // res.status(401).json({ message: 'Unauthorized' }); + // return; + //} + // + //const parseUserResult = requestUserSchema.safeParse(user); + // + //if (!parseUserResult.success) { + // console.log('invalid user found'); + // + // res.status(401).json({ message: 'Unauthorized' }); + // return; + //} + // + //req.user = parseUserResult.data; + // + //// check cookies for auth tokens + next(); + return; }; diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index 25fdb95..eb73308 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -1,6 +1,3 @@ import { Router } from 'express'; -import { mfaRouter } from './mfa'; export const authRouter = Router(); - -authRouter.use('/mfa', mfaRouter); diff --git a/api/src/routes/mfa.ts b/api/src/routes/mfa.ts index e4f68eb..2227bcb 100644 --- a/api/src/routes/mfa.ts +++ b/api/src/routes/mfa.ts @@ -1,20 +1,20 @@ -import { Router } from 'express'; -import { MFAController } from '../controllers/mfa'; -import { requireAuth } from '../middleware/auth'; -import { logMiddleware } from '../middleware/log'; - -export const mfaRouter = Router(); - -// TODO: update routes so they aren't these temp ones for testing - -mfaRouter.post('/init', requireAuth, MFAController.initMFA); - -mfaRouter.post('/confirm-init', requireAuth, MFAController.confirmMFA); - -mfaRouter.post('/verify', requireAuth, MFAController.verifyMFA); - -// ! temp -// TODO: remove -mfaRouter.get('/test/:id', MFAController.testRoute); - -// TODO: add route to reinit MFA if they are alrady signed in +//import { Router } from 'express'; +//import { MFAController } from '../controllers/mfa'; +//import { requireAuth } from '../middleware/auth'; +//import { logMiddleware } from '../middleware/log'; +// +//export const mfaRouter = Router(); +// +//// TODO: update routes so they aren't these temp ones for testing +// +//mfaRouter.post('/init', requireAuth, MFAController.initMFA); +// +//mfaRouter.post('/confirm-init', requireAuth, MFAController.confirmMFA); +// +//mfaRouter.post('/verify', requireAuth, MFAController.verifyMFA); +// +//// ! temp +//// TODO: remove +//mfaRouter.get('/test/:id', MFAController.testRoute); +// +//// TODO: add route to reinit MFA if they are alrady signed in diff --git a/api/src/schemas/auth/user.ts b/api/src/schemas/auth/user.ts index cf5caec..4c6110a 100644 --- a/api/src/schemas/auth/user.ts +++ b/api/src/schemas/auth/user.ts @@ -2,40 +2,42 @@ import { Request } from 'express'; import { ObjectId } from 'mongodb'; import { z } from 'zod'; -export const UserSchema = z.object({ +export const userSchema = z.object({ /** MongoDB ObjectID */ _id: z.coerce.string().refine((val) => ObjectId.isValid(val), { message: 'Invalid ObjectID', }), email: z.string().email(), + dob: z.coerce.date(), + sex: z.enum(['m', 'f']), }); -export type User = z.infer; +export type User = z.infer; -export enum InvalidUseType { - INVALID_ID = 'Invalid ID', - INVALID_EMAIL = 'Invalid Email', - DOES_NOT_EXIST = 'Does Not Exist', - OTHER = 'Other', -} - -export class InvalidUserError extends Error { - constructor(details?: { type?: InvalidUseType; message?: string }) { - super(`Invalid User${details?.message ? `: ${details.message}` : ''}`); - this.name = 'InvalidUserError'; - Object.setPrototypeOf(this, InvalidUserError.prototype); - } -} - -export const requestUserSchema = z.object({ - id: z.string(), - email: z.string().email(), - // ... -}); - -type RequestUser = z.infer; - -// TODO: replace with actual user object -export interface AuthenticatedRequest extends Request { - user?: RequestUser | undefined; -} +//export enum InvalidUseType { +// INVALID_ID = 'Invalid ID', +// INVALID_EMAIL = 'Invalid Email', +// DOES_NOT_EXIST = 'Does Not Exist', +// OTHER = 'Other', +//} +// +//export class InvalidUserError extends Error { +// constructor(details?: { type?: InvalidUseType; message?: string }) { +// super(`Invalid User${details?.message ? `: ${details.message}` : ''}`); +// this.name = 'InvalidUserError'; +// Object.setPrototypeOf(this, InvalidUserError.prototype); +// } +//} +// +//export const requestUserSchema = z.object({ +// id: z.string(), +// email: z.string().email(), +// // ... +//}); +// +//type RequestUser = z.infer; +// +//// TODO: replace with actual user object +//export interface AuthenticatedRequest extends Request { +// user?: RequestUser | undefined; +//} diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts new file mode 100644 index 0000000..9ff069c --- /dev/null +++ b/api/src/services/auth/auth.ts @@ -0,0 +1,8 @@ +export class AuthService { + //public async register() +} + +/** + * Secure Remote Password (SRP) service. Handles SRP verifications. + */ +class SRP {} diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 3fcd141..d17a898 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -6,46 +6,40 @@ import { RedisClientType } from 'redis'; const COLLECTION_NAME = 'users'; -// TODO: create type +export interface UserDoc extends User {} export class UserRepository { - private readonly collection: Collection; + private readonly collection: Collection; private readonly redis: RedisClientType; constructor(db: Db, redis: RedisClientType) { - this.collection = db.collection(COLLECTION_NAME); + this.collection = db.collection(COLLECTION_NAME); this.redis = redis; } - // ! temp method - // TODO: replace with actual methods - public async getUserById(userId: string) { - assert(ObjectId.isValid(userId), 'userId must be a valid ObjectId'); - - const doc = await this.collection.findOne({ _id: new ObjectId(userId) }); - - return doc; - } - - /** - *Checks if a user exists by their id - * @param userId - The user to check - * @returns true if the user exists, false otherwise - */ - public async userExists(userId: string): Promise { - assert(ObjectId.isValid(userId), 'userId must be a valid ObjectId'); - const user = await this.collection.findOne({ _id: new ObjectId(userId) }); - return !!user; - } - - /** - * @returns The user's id - */ - public async createUser() { - const result = await this.collection.insertOne({ - email: `example${randomInt(99999)}@domain.com`, - }); - - return result.insertedId.toString(); - } + //public async getUserById(userId: string) { + // // TODO: implement + //} + + ///** + // *Checks if a user exists by their id + // * @param userId - The user to check + // * @returns true if the user exists, false otherwise + // */ + //public async userExists(userId: string): Promise { + // assert(ObjectId.isValid(userId), 'userId must be a valid ObjectId'); + // const user = await this.collection.findOne({ _id: new ObjectId(userId) }); + // return !!user; + //} + + ///** + // * @returns The user's id + // */ + //public async createUser() { + // const result = await this.collection.insertOne({ + // email: `example${randomInt(99999)}@domain.com`, + // }); + // + // return result.insertedId.toString(); + //} } From dbe6089b42392b8ff859fd47fae8970e5f42679e Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sat, 22 Feb 2025 14:56:25 +0400 Subject: [PATCH 05/25] stash --- api/src/controllers/auth.ts | 28 +++++++++++++++++- api/src/routes/auth.ts | 5 ++++ api/src/schemas/auth/user.ts | 36 ++++++++++++++++++++---- api/src/services/auth/auth.ts | 4 ++- api/src/services/db/repositories/user.ts | 12 +++++++- 5 files changed, 77 insertions(+), 8 deletions(-) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 72a752b..280aeca 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -1 +1,27 @@ -export class AuthController {} +import { Request, Response } from 'express'; +import { createUserSchema } from '../schemas/auth/user'; +import { DatabaseService } from '../services/db/db'; + +export class AuthController { + public static async register(req: Request, res: Response) { + try { + // validate body + const data = req.body; + try { + createUserSchema.parse(data); + } catch (_) { + res.status(400).send('Invalid Request'); + return; + } + + const db = new DatabaseService(); + + // create user + //const result + } catch (e) { + console.error(e); + res.status(500).send('Internal Server Error'); + return; + } + } +} diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index eb73308..d9d6e85 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -1,3 +1,8 @@ import { Router } from 'express'; +import { AuthController } from '../controllers/auth'; export const authRouter = Router(); + +authRouter.post('/register', async (req, res) => + AuthController.register(req, res), +); diff --git a/api/src/schemas/auth/user.ts b/api/src/schemas/auth/user.ts index 4c6110a..5c89722 100644 --- a/api/src/schemas/auth/user.ts +++ b/api/src/schemas/auth/user.ts @@ -2,14 +2,31 @@ import { Request } from 'express'; import { ObjectId } from 'mongodb'; import { z } from 'zod'; +export const emailSchema = z.string().email(); +export type Email = z.infer; + +export const dobSchema = z.coerce.date(); +export type DOB = z.infer; + +/** The user's sex/gender */ +export const sexSchema = z.enum(['m', 'f']); +/** The user's sex/gender */ +export type Sex = z.infer; + export const userSchema = z.object({ /** MongoDB ObjectID */ - _id: z.coerce.string().refine((val) => ObjectId.isValid(val), { - message: 'Invalid ObjectID', - }), + _id: z.coerce + .string() + .refine((val) => ObjectId.isValid(val), { + message: 'Invalid ObjectID', + }) + .optional(), + /** The user's email */ email: z.string().email(), - dob: z.coerce.date(), - sex: z.enum(['m', 'f']), + /** The user's date of birth */ + dob: dobSchema.optional(), + /** The user's sex/gender */ + sex: sexSchema.optional(), }); export type User = z.infer; @@ -41,3 +58,12 @@ export type User = z.infer; //export interface AuthenticatedRequest extends Request { // user?: RequestUser | undefined; //} + +// Request schemas +export const createUserSchema = z.object({ + email: z.string().email(), + password: z.string(), + dob: dobSchema.optional(), + sex: sexSchema.optional(), +}); +export type CreateUserData = z.infer; diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index 9ff069c..e3553b5 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -1,5 +1,7 @@ +import { CreateUserData } from '../../schemas/auth/user'; + export class AuthService { - //public async register() + public async createUser(data: CreateUserData) {} } /** diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index d17a898..f965462 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -1,6 +1,10 @@ import assert from 'assert'; import { Collection, Db, ObjectId } from 'mongodb'; -import { User } from '../../../schemas/auth/user'; +import { + CreateUserData as CreateUserData, + User, + userSchema, +} from '../../../schemas/auth/user'; import { randomInt } from 'crypto'; import { RedisClientType } from 'redis'; @@ -17,6 +21,12 @@ export class UserRepository { this.redis = redis; } + public async createUser(data: CreateUserData) { + const result = await this.collection.insertOne(data); + + return result.insertedId.toString(); + } + //public async getUserById(userId: string) { // // TODO: implement //} From 21260706ed6a77afa27e9c7e43c978df96fe13db Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sun, 23 Feb 2025 13:43:46 +0400 Subject: [PATCH 06/25] initial version of registeration and confirming mfa --- api/src/controllers/auth.ts | 157 +++++++++- api/src/controllers/household.ts | 16 +- api/src/index.ts | 2 + api/src/middleware/auth.ts | 130 ++++++-- api/src/routes/auth.ts | 7 +- api/src/schemas/auth/auth.ts | 32 +- api/src/schemas/auth/mfa.ts | 9 - api/src/schemas/auth/tokens.ts | 14 +- api/src/schemas/auth/user.ts | 35 +-- api/src/schemas/obj-id.ts | 9 +- api/src/services/auth/auth.ts | 79 ++++- api/src/services/auth/mfa.ts | 278 ++++++------------ api/src/services/auth/token.ts | 44 +-- api/src/services/db/repositories/token.ts | 30 +- api/src/services/db/repositories/user.ts | 136 +++++++-- .../xcshareddata/xcschemes/Runner.xcscheme | 1 + app/lib/main.dart | 2 + app/lib/models/mfa.dart | 13 + app/lib/models/user.dart | 29 ++ app/lib/services/auth.dart | 1 + app/lib/services/mfa.dart | 39 +-- app/lib/widgets/mfa_code.dart | 3 +- 22 files changed, 721 insertions(+), 345 deletions(-) delete mode 100644 api/src/schemas/auth/mfa.ts create mode 100644 app/lib/models/mfa.dart create mode 100644 app/lib/models/user.dart create mode 100644 app/lib/services/auth.dart diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 30e9196..818037e 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -1,26 +1,175 @@ import { Request, Response } from 'express'; import { CreateUserData, createUserSchema } from '../schemas/auth/user'; +import { AuthService } from '../services/auth/auth'; +import { MFAService } from '../services/auth/mfa'; +import { + AuthenticatedRequest, + IncorrectMFACodeError, + MFACode, + mfaCodeSchema, +} from '../schemas/auth/auth'; +import { TokenService } from '../services/auth/token'; +import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; export class AuthController { - // eslint-disable-next-line @typescript-eslint/require-await public static async register(req: Request, res: Response) { try { + // TODO: remove and replace with require device id middleware + const deviceId = req.headers['x-device-id'] as string | undefined; + if (!deviceId) { + res.status(400).send({ error: 'Device id not found' }); + return; + } + + // TODO: password SRP stuff + // validate body let data: CreateUserData; try { - // eslint-disable-next-line @typescript-eslint/no-unused-vars data = createUserSchema.parse(req.body); } catch (_) { - res.status(400).send('Invalid Request'); + res.status(400).send('Invalid body'); + return; + } + + console.log(data); + + const as = new AuthService(); + + if (await as.userExistsEmail(data.email)) { + res.status(400).send({ error: 'Invalid request' }); return; } // create user - //const result + const { user, mfaFormattedKey } = await as.registerUser(data); + const ms = new MFAService(); + const mfaUri = ms.generateMFAUri(mfaFormattedKey, user.email); + + // generate mfa token + const mfaToken = await new TokenService().createMFAToken( + user._id.toString(), + deviceId, + ); + + res.cookie('mfa-token', mfaToken, { + httpOnly: true, + secure: false, + sameSite: 'none', + expires: new Date( + Date.now() + TokenService.MFA_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + + res.status(201).send({ user, mfaFormattedKey, mfaQRUri: mfaUri }); } catch (e) { console.error(e); res.status(500).send('Internal Server Error'); return; } } + + public static async confirmMFA(req: AuthenticatedRequest, res: Response) { + try { + const deviceId = req.deviceId!; + + // get mfa token + const mfaToken = req.cookies['mfa-token'] as string | undefined; + console.log(req.cookies); + + if (!mfaToken) { + res.status(400).send({ error: 'MFA token not found' }); + return; + } + + let code: MFACode; + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + code = mfaCodeSchema.parse(req.body.code); + } catch (_) { + res.status(400).send({ error: 'Invalid code' }); + return; + } + + // verify mfa token + const ts = new TokenService(); + let mfaPayload: MFATokenPayload; + try { + mfaPayload = await ts.verifyMFAToken(mfaToken); + console.log('mfaPayload:', mfaPayload); + } catch (e) { + if (e instanceof InvalidTokenError) { + res.status(401).send({ error: 'Invalid MFA token' }); + return; + } else { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + return; + } + } + + if (deviceId !== mfaPayload.deviceId) { + res.status(400).send({ error: 'Invalid device id' }); + return; + } + + const as = new AuthService(); + try { + await as.confirmUserMFA(mfaPayload.userId, code); + const { accessToken, refreshToken, idToken } = + await ts.generateAllTokens(mfaPayload.userId, deviceId); + + res.cookie('access-token', accessToken, { + httpOnly: true, + secure: false, + expires: new Date( + Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + res.cookie('refresh-token', refreshToken, { + httpOnly: true, + secure: false, + expires: new Date( + Date.now() + TokenService.REFRESH_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + res.cookie('id-token', idToken, { + httpOnly: false, + secure: false, + expires: new Date( + Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + res.clearCookie('mfa-token'); + res.status(200).send(); + return; + } catch (e) { + // mfa is valid, create a new one since the old one is now blacklisted + const newMfaToken = await ts.createMFAToken( + mfaPayload.userId, + mfaPayload.deviceId, + ); + res.cookie('mfa-token', newMfaToken, { + httpOnly: true, + secure: false, + sameSite: 'none', + expires: new Date( + Date.now() + TokenService.MFA_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + if (e instanceof IncorrectMFACodeError) { + res.status(400).send({ error: 'Incorrect MFA Code' }); + } else { + console.error(e); + res + .status(400) + .send({ error: 'User does not exist or already confirmed MFA' }); + } + } + return; + } catch (e) { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + } + } } diff --git a/api/src/controllers/household.ts b/api/src/controllers/household.ts index fe3ab0a..c3d7255 100644 --- a/api/src/controllers/household.ts +++ b/api/src/controllers/household.ts @@ -106,7 +106,7 @@ export class HouseholdController { const updatedHousehold = await hs.addMember( householdId, memberId, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); @@ -132,7 +132,7 @@ export class HouseholdController { const updatedHousehold = await hs.respondToInvite( inviteId, response, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); @@ -159,7 +159,7 @@ export class HouseholdController { const updatedHousehold = await hs.removeMember( householdId, memberId, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); } catch (e) { @@ -180,7 +180,7 @@ export class HouseholdController { const { householdId } = req.params; const hs = new HouseholdService(); - await hs.deleteHousehold(householdId, req.user._id); + await hs.deleteHousehold(householdId, req.user._id.toString()); res.status(200).send({ message: 'Household deleted' }); } catch (e) { console.error(e); @@ -207,7 +207,7 @@ export class HouseholdController { const updatedHousehold = await hs.addRoom( householdId, roomRequestData, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); } catch (e) { @@ -262,7 +262,7 @@ export class HouseholdController { householdId, memberId, newRole, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); } catch (e) { @@ -288,7 +288,7 @@ export class HouseholdController { householdId, roomId, action, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); } catch (e) { @@ -312,7 +312,7 @@ export class HouseholdController { const updatedHousehold = await hs.removeRoom( householdId, roomId, - req.user._id, + req.user._id.toString(), ); res.status(200).send(updatedHousehold); diff --git a/api/src/index.ts b/api/src/index.ts index 0d249a6..3eff97a 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -4,6 +4,7 @@ import cookieParser from 'cookie-parser'; import { logMiddleware } from './middleware/log'; import { authRouter } from './routes/auth'; import { householdRouter } from './routes/household'; +import { parseAuth } from './middleware/auth'; dotenv.config(); @@ -13,6 +14,7 @@ const port = process.env.PORT ?? 3000; app.use(express.json()); app.use(cookieParser()); app.use(logMiddleware); +app.use(parseAuth); const router = express.Router(); diff --git a/api/src/middleware/auth.ts b/api/src/middleware/auth.ts index fbd6838..c43b8ed 100644 --- a/api/src/middleware/auth.ts +++ b/api/src/middleware/auth.ts @@ -1,33 +1,127 @@ -import { Request, Response, NextFunction } from 'express'; +import { Response, NextFunction } from 'express'; import { AuthenticatedRequest } from '../schemas/auth/auth'; +import { TokenService } from '../services/auth/token'; +import { AccessTokenPayload, tokenTypeSchema } from '../schemas/auth/tokens'; -/** - * A middleware for routes which require the user to be logged in. If the user - * is found and valid, they will be added to the request object. If not found or - * not valid, a 401 is returned. - */ -export const requireAuth = ( - req: Request, +// TODO: auto refresh tokens if access is about to expire +// TODO finish implementation and testing +export const parseAuth = async ( + req: AuthenticatedRequest, res: Response, next: NextFunction, ) => { - // TODO: implement + try { + // check for device id + const deviceId = req.headers['x-device-id'] as string | undefined; + if (deviceId) { + req.deviceId = deviceId; + } + + const ts = new TokenService(); + + // get access token from authorization header + const authHeader = req.headers.authorization; + if (authHeader) { + const prefix = 'Bearer '; + if (authHeader.startsWith(prefix)) { + const accessToken = authHeader.substring(prefix.length); + + const { valid, payload } = await ts.verifyToken(accessToken, true); + + if (valid) { + if (payload!.type === tokenTypeSchema.enum.ACCESS) { + req.user = (payload as AccessTokenPayload).user; + } + } + } + } else { + // check cookies for access + const accessToken: string | undefined = req.cookies['access-token'] as + | string + | undefined; + if (accessToken) { + const { valid, payload } = await ts.verifyToken(accessToken, true); + if (valid) { + if (payload!.type === tokenTypeSchema.enum.ACCESS) { + req.user = (payload as AccessTokenPayload).user; + } + } + } + } + + // TODO: auto refresh + //if (!req.user) { + // // access either missing or invalid (possibly expired), check for refresh + // const refreshToken: string | undefined = req.cookies['refresh-token'] as + // | string + // | undefined; + // const deviceId = req.deviceId; + // if (refreshToken && deviceId) { + // const { valid, payload } = await ts.verifyToken(refreshToken, true); + // if (valid) { + // if (payload!.type === tokenTypeSchema.enum.REFRESH) { + // // refresh access token + // const newTokens = await ts.refreshTokens(refreshToken, deviceId); + // + // // set new tokens in cookies + // res.cookie('access-token', newTokens.accessToken, { + // httpOnly: true, + // secure: false, // TODO: set to true in production + // sameSite: 'none', + // }); + // if (newTokens.refreshToken) { + // res.cookie('refresh-token', newTokens.refreshToken, { + // httpOnly: true, + // secure: false, // TODO: set to true in production + // sameSite: 'none', + // }); + // } + // if (newTokens.idToken) { + // res.cookie('id-token', newTokens.idToken, { + // httpOnly: false, + // secure: false, // TODO: set to true in production + // sameSite: 'none', + // }); + // } + // } + // } + // } + //} + + next(); + } catch (e) { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + return; + } +}; + +export const requireDeviceId = ( + req: AuthenticatedRequest, + res: Response, + next: NextFunction, +) => { + if (!req.deviceId || req.deviceId.length === 0) { + res.status(400).send({ error: 'Device ID required' }); + return; + } next(); - return; }; /** - * A middleware for routes which may use authentication information if available - * but the user isn't required to be logged in. If found, the user will be added - * to the request object. If not found or not valid, it will be undefined. + * A middleware for routes which require the user to be logged in. If the user + * is found and valid, they will be added to the request object. If not found or + * not valid, a 401 is returned. */ -export const optionalAuth = ( +export const requireAuth = ( req: AuthenticatedRequest, res: Response, next: NextFunction, ) => { - // TODO: implement - - // check cookies for auth tokens - return next(); + if (!req.user) { + res.status(401).send('Unauthorized'); + return; + } + next(); + return; }; diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index d9d6e85..bfcddaf 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -1,8 +1,13 @@ import { Router } from 'express'; import { AuthController } from '../controllers/auth'; +import { requireDeviceId } from '../middleware/auth'; export const authRouter = Router(); -authRouter.post('/register', async (req, res) => +authRouter.post('/register', requireDeviceId, (req, res) => AuthController.register(req, res), ); + +authRouter.post('/mfa/confirm', requireDeviceId, (req, res) => + AuthController.confirmMFA(req, res), +); diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index 3325140..2c73501 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -1,6 +1,34 @@ import { Request } from 'express'; -import { UserWithId } from './user'; +import { z } from 'zod'; +import { AccessTokenUser } from './tokens'; export interface AuthenticatedRequest extends Request { - user?: UserWithId | undefined; + user?: AccessTokenUser | undefined; + deviceId?: string | undefined; +} + +const mfaFormattedKeySchema = z.string(); +export type MFAFormattedKey = z.infer; + +/** The MFA Code */ +export const mfaCodeSchema = z.coerce + .string() + .min(6) + .max(6) + .regex(/^\d+$/, 'Must contain only numeric characters'); + +/** The MFA Code */ +export type MFACode = z.infer; + +export const mfaSchema = z.object({ + formattedKey: mfaFormattedKeySchema, + confirmed: z.boolean(), +}); +export type MFA = z.infer; + +export class IncorrectMFACodeError extends Error { + constructor() { + super(`Incorrect MFA code`); + this.name = 'IncorrectMFACode'; + } } diff --git a/api/src/schemas/auth/mfa.ts b/api/src/schemas/auth/mfa.ts deleted file mode 100644 index c6fcffc..0000000 --- a/api/src/schemas/auth/mfa.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { z } from 'zod'; - -export const mfaTokenSchema = z - .string() - .min(6) - .max(6) - .regex(/^\d+$/, 'Must contain only numeric characters'); - -export type MFAToken = z.infer; diff --git a/api/src/schemas/auth/tokens.ts b/api/src/schemas/auth/tokens.ts index c2bb38e..870ce30 100644 --- a/api/src/schemas/auth/tokens.ts +++ b/api/src/schemas/auth/tokens.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import { userWithIdSchema } from './user'; export const jwtSecretSchema = z.object({ /** The secret to sign the JWT with */ @@ -48,9 +49,14 @@ export const refreshTokenPayloadSchema = tokenPayloadSchema.extend({ export type RefreshTokenPayload = z.infer; +export const accessTokenUserSchema = userWithIdSchema.extend({}); +export type AccessTokenUser = z.infer; + export const accessTokenPayloadSchema = refreshTokenPayloadSchema.extend({ - /** The email of the user the token is for */ - email: z.string(), + ///** The email of the user the token is for */ + //email: z.string(), + /** The user */ + user: accessTokenUserSchema, /** The refresh token used to generate this access token's identifier */ refreshJti: z.string().min(1), /** The type of the token */ @@ -63,8 +69,8 @@ export type AccessTokenPayload = z.infer; export const idTokenPayloadSchema = tokenPayloadSchema.extend({ /** The user's name */ name: z.string(), - /** The user's email */ - email: z.string().email(), + /** The user */ + user: accessTokenUserSchema, /** The type of the token */ type: z.literal(tokenTypeSchema.enum.ID), }); diff --git a/api/src/schemas/auth/user.ts b/api/src/schemas/auth/user.ts index 97cd1f1..c37395b 100644 --- a/api/src/schemas/auth/user.ts +++ b/api/src/schemas/auth/user.ts @@ -1,10 +1,14 @@ -import { objectIdStringSchema } from '../obj-id'; +import { objectIdOrStringSchema } from '../obj-id'; import { z } from 'zod'; +/** Email address */ export const emailSchema = z.string().email(); +/** Email address */ export type Email = z.infer; +/** Date of birth */ export const dobSchema = z.coerce.date(); +/** Date of birth */ export type DOB = z.infer; /** The user's sex/gender */ @@ -12,9 +16,10 @@ export const sexSchema = z.enum(['m', 'f']); /** The user's sex/gender */ export type Sex = z.infer; +/** THe user schema */ export const userSchema = z.object({ - /** MongoDB ObjectID */ - _id: objectIdStringSchema.optional(), + /** The user's id */ + _id: objectIdOrStringSchema.optional(), /** The user's email */ email: z.string().email(), /** The user's date of birth */ @@ -23,45 +28,37 @@ export const userSchema = z.object({ sex: sexSchema.optional(), }); +/** User and their information */ export type User = z.infer; /** The user schema but with an id guaranteed not to be undefined */ export const userWithIdSchema = userSchema.extend({ - _id: objectIdStringSchema, + /** The user's id */ + _id: objectIdOrStringSchema, }); /** The user schema but with an id guaranteed not to be undefined */ export type UserWithId = z.infer; -export enum InvalidUseType { +/** Invalid user types */ +export enum InvalidUserType { INVALID_ID = 'Invalid ID', INVALID_EMAIL = 'Invalid Email', DOES_NOT_EXIST = 'Does Not Exist', OTHER = 'Other', } +/** Error for invalid users */ export class InvalidUserError extends Error { - constructor(details?: { type?: InvalidUseType; message?: string }) { + constructor(details?: { type?: InvalidUserType; message?: string }) { super(`Invalid User${details?.message ? `: ${details.message}` : ''}`); this.name = 'InvalidUserError'; Object.setPrototypeOf(this, InvalidUserError.prototype); } } -//export const requestUserSchema = z.object({ -// id: z.string(), -// email: z.string().email(), -// // ... -//}); -// -//type RequestUser = z.infer; -// -//// TODO: replace with actual user object -//export interface AuthenticatedRequest extends Request { -// user?: RequestUser | undefined; -//} +/* Request schemas */ -// Request schemas export const createUserSchema = z.object({ email: z.string().email(), password: z.string(), diff --git a/api/src/schemas/obj-id.ts b/api/src/schemas/obj-id.ts index ba47ca6..f269401 100644 --- a/api/src/schemas/obj-id.ts +++ b/api/src/schemas/obj-id.ts @@ -9,9 +9,12 @@ export const objectIdStringSchema = z.coerce export type ObjectIdString = z.infer; -export const objectIdSchema = objectIdStringSchema.transform( - (val) => new ObjectId(val), -); +//export const objectIdSchema = objectIdStringSchema.transform( +// (val) => new ObjectId(val), +//); +export const objectIdSchema = z + .union([objectIdStringSchema, z.instanceof(ObjectId)]) + .transform((val) => (val instanceof ObjectId ? val : new ObjectId(val))); export const objectIdOrStringSchema = z.union([ objectIdSchema, diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index e543abb..a048e91 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -1,8 +1,81 @@ -import { CreateUserData } from '../../schemas/auth/user'; +import { + IncorrectMFACodeError, + MFAFormattedKey, + MFACode, +} from '../../schemas/auth/auth'; +import { CreateUserData, Email, UserWithId } from '../../schemas/auth/user'; +import { ObjectIdOrString } from '../../schemas/obj-id'; +import { DatabaseService } from '../db/db'; +import { MFAService } from './mfa'; export class AuthService { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - public async createUser(data: CreateUserData) {} + protected readonly db: DatabaseService; + + constructor() { + this.db = new DatabaseService(); + } + + /** + * Registers a user with our system + * @param data - The user's information + * @returns The user that was created and their MFA formatted key + */ + public async registerUser( + data: CreateUserData, + ): Promise<{ user: UserWithId; mfaFormattedKey: MFAFormattedKey }> { + const ms = new MFAService(); + const formattedKey = ms.generateMFAFormattedKey(); + const userId = await this.db.userRepository.createUser(data, formattedKey); + + return { + user: await this.db.userRepository.getUserById(userId), + mfaFormattedKey: formattedKey, + }; + } + + /** + * Check if a user with the provided email exists + * @param email - The email to check + * @returns true if the email is registered, false otherwise + */ + public async userExistsEmail(email: Email): Promise { + return await this.db.userRepository.userExistsEmail(email); + } + + /** + * Check if a user witht he provided id exists + * @param userId - The id to check + * @returns true if the user exists, false otherwise + */ + public async userExistsId(userId: string): Promise { + return await this.db.userRepository.userExists(userId); + } + + /** + * Verify an MFA Code and mark the user's mfa as correctly setup/confirmed + * @param userId - The id of the user + * @param code - the MFA code to verify + * @throws An error if the user does not exist + * @throws An error if the user already confirmed MFA + * @throws An IncorrectMFATokenError if the code is incorrect + */ + public async confirmUserMFA(userId: string, code: MFACode) { + const userMFA = await this.db.userRepository.getUserMFA(userId); + if (userMFA.confirmed) { + throw new Error('User already confirmed MFA'); + } + const ms = new MFAService(); + if (ms.verifyToken(userMFA.formattedKey, code)) { + // correct, mark mfa as confirmed + await this.db.userRepository.confirmUserMFA(userId); + } else { + throw new IncorrectMFACodeError(); + } + } + + public async getUserById(userId: ObjectIdOrString): Promise { + return await this.db.userRepository.getUserById(userId); + } } /** diff --git a/api/src/services/auth/mfa.ts b/api/src/services/auth/mfa.ts index de9a4ec..abaff6b 100644 --- a/api/src/services/auth/mfa.ts +++ b/api/src/services/auth/mfa.ts @@ -1,182 +1,96 @@ -//import * as authenticator from 'authenticator'; -//import { MFAToken } from '../../schemas/auth/mfa'; -// -//// TODO: replace temp classes with actual classes -// -//// ! temp interface -//interface MFAFormattedKey { -// formattedKey: string; -// confirmed: boolean; -//} -// -//// ! temp interface -//interface User { -// _id: string; -// email: string; -//} -// -//// ! temp class -//class UserRepository { -// private static readonly m: { [key: string]: MFAFormattedKey } = {}; -// -// // eslint-disable-next-line @typescript-eslint/require-await, @typescript-eslint/no-unused-vars -// public async userExists(userId: string): Promise { -// return true; -// } -// -// // eslint-disable-next-line @typescript-eslint/require-await -// public async getUserById(userId: string) { -// const testUser: User = { -// _id: userId, -// email: 'example@domain.com', -// }; -// return testUser; -// } -// -// // eslint-disable-next-line @typescript-eslint/require-await -// public async getUserMFAformattedKey(userId: string) { -// console.log('userid', userId, 'm', UserRepository.m); -// -// if (!UserRepository.m[userId]) { -// return null; -// } -// return UserRepository.m[userId]; -// } -// -// // eslint-disable-next-line @typescript-eslint/require-await -// public async isUserMFAInitialised(userId: string) { -// return !!UserRepository.m[userId]; -// } -// -// // eslint-disable-next-line @typescript-eslint/require-await -// public async saveUserMFAUnconfirmed(userId: string, formattedKey: string) { -// console.log('mfa initialised'); -// -// UserRepository.m[userId] = { formattedKey, confirmed: false }; -// } -// -// // eslint-disable-next-line @typescript-eslint/require-await -// public async confirmUserMFA(userId: string) { -// if (!UserRepository.m[userId]) { -// throw new Error('User did not setup MFA'); -// } -// -// UserRepository.m[userId].confirmed = true; -// } -//} -// -//// ! temp class -//export class DatabaseService { -// private readonly _userRepo; -// -// constructor() { -// this._userRepo = new UserRepository(); -// } -// -// get userRepository(): UserRepository { -// return this._userRepo; -// } -//} -// -//export class MFAService { -// private readonly db; -// -// constructor(db: DatabaseService) { -// this.db = db; -// } -// -// /** -// * Initialises MFA for the user. It must be confirmed by {@link finishInitMFASetup} before it can be used. They also must not have already setup MFA. -// * @param userId - The user for whom to init MFA -// * @returns The formattedKey to be used for MFA -// * @throws Error if the user already has MFA setup -// * @throws Error if the user does not exist -// * @throws Error if the db operation fails -// */ -// public async initUserMFA(userId: string): Promise<{ -// formattedKey: string; -// uri: string; -// }> { -// const user = await this.db.userRepository.getUserById(userId); -// -// if (!(await this.db.userRepository.userExists(userId))) { -// throw new Error('User does not exist'); -// } -// -// if (await this.db.userRepository.isUserMFAInitialised(userId)) { -// throw new Error('User already has MFA setup'); -// } -// -// const formattedKey = authenticator.generateKey(); -// const uri = authenticator.generateTotpUri( -// formattedKey, -// user.email, -// 'Smartify', -// 'SHA1', -// 6, -// 30, -// ); -// -// await this.db.userRepository.saveUserMFAUnconfirmed(userId, formattedKey); -// -// // TODO: check if result is successful once implemented with actual classes -// -// return { formattedKey, uri }; -// } -// -// /** -// * Verifies the user's MFA token is correct -// * @param formattedKey - The user's formatted key -// * @param userToken - The token the user entered -// * @returns True if the token is correct, false otherwise -// */ -// private verifyToken(formattedKey: string, userToken: MFAToken): boolean { -// const result = authenticator.verifyToken(formattedKey, userToken); -// return result != null; -// } -// -// /** -// * Finish the users MFA setup by confirming the user has correctly setup MFA -// * @param userId - The id of the user -// * @param token - The token the user entered to confirm they've correctly setup MFA -// * @returns A boolean indicating if the code is correct or not, and hence, if the MFA setup was successful -// * @throws Error if the user does not exist -// * @throws Error if the user did not setup MFA -// * @throws Error if the user already confirmed MFA -// */ -// public async finishInitMFASetup( -// userId: string, -// token: MFAToken, -// ): Promise { -// if (!(await this.db.userRepository.userExists(userId))) { -// throw new Error('User does not exist'); -// } -// const userMFA = await this.db.userRepository.getUserMFAformattedKey(userId); -// if (!userMFA || !userMFA.formattedKey) { -// throw new Error('User did not setup MFA'); -// } -// if (userMFA.confirmed) { -// throw new Error('User already confirmed MFA'); -// } -// if (!this.verifyToken(userMFA.formattedKey, token)) { -// return false; -// } -// await this.db.userRepository.confirmUserMFA(userId); -// return true; -// } -// -// /** -// * Verify the user's MFA token. -// * @param userId - The user's id -// * @param token - The token the user entered (6 digit string) -// * @returns whether the token is correct or not -// * @throws Error if the user did not setup MFA -// */ -// public async verifyMFA(userId: string, token: MFAToken): Promise { -// const userMFA = await this.db.userRepository.getUserMFAformattedKey(userId); -// if (!userMFA || !userMFA.formattedKey || !userMFA.confirmed) { -// throw new Error('User did not setup MFA'); -// } -// return this.verifyToken(userMFA.formattedKey, token); -// } -//} +import * as authenticator from 'authenticator'; +import { DatabaseService } from '../db/db'; +import { Email } from '../../schemas/auth/user'; +import { MFAFormattedKey, MFACode } from '../../schemas/auth/auth'; + +export class MFAService { + private readonly db; + + constructor() { + this.db = new DatabaseService(); + } + + /** + * Generate a formatted key for MFA + * @returns The formatted key + */ + public generateMFAFormattedKey(): MFAFormattedKey { + return authenticator.generateKey(); + } + + /** + * Generate a QR Code URI for a user to setup MFA + * @param formattedKey - The user's formatted key + * @param email - The user's email address + * @returns The formatted key + */ + public generateMFAUri(formattedKey: MFAFormattedKey, email: Email) { + return authenticator.generateTotpUri( + formattedKey, + email, + 'Smartify', + 'SHA1', + 6, + 30, + ); + } + + /** + * Verifies the user's MFA token is correct + * @param formattedKey - The user's formatted key + * @param userToken - The token the user entered + * @returns True if the token is correct, false otherwise + */ + public verifyToken( + formattedKey: MFAFormattedKey, + userToken: MFACode, + ): boolean { + const result = authenticator.verifyToken(formattedKey, userToken); + return result != null; + } + + ///** + // * Finish the users MFA setup by confirming the user has correctly setup MFA + // * @param userId - The id of the user + // * @param token - The token the user entered to confirm they've correctly setup MFA + // * @returns A boolean indicating if the code is correct or not, and hence, if the MFA setup was successful + // * @throws Error if the user does not exist + // * @throws Error if the user did not setup MFA + // * @throws Error if the user already confirmed MFA + // */ + //public async finishInitMFASetup( + // userId: string, + // token: MFAToken, + //): Promise { + // if (!(await this.db.userRepository.userExists(userId))) { + // throw new Error('User does not exist'); + // } + // const userMFA = await this.db.userRepository.getUserMFAformattedKey(userId); + // if (!userMFA || !userMFA.formattedKey) { + // throw new Error('User did not setup MFA'); + // } + // if (userMFA.confirmed) { + // throw new Error('User already confirmed MFA'); + // } + // if (!this.verifyToken(userMFA.formattedKey, token)) { + // return false; + // } + // await this.db.userRepository.confirmUserMFA(userId); + // return true; + //} + + ///** + // * Verify the user's MFA token. + // * @param userId - The user's id + // * @param token - The token the user entered (6 digit string) + // * @returns whether the token is correct or not + // * @throws Error if the user did not setup MFA + // */ + //public async verifyMFA(userId: string, token: MFAToken): Promise { + // const userMFA = await this.db.userRepository.getUserMFA(userId); + // if (!userMFA || !userMFA.formattedKey || !userMFA.confirmed) { + // throw new Error('User did not setup MFA'); + // } + // return this.verifyToken(userMFA.formattedKey, token); + //} +} diff --git a/api/src/services/auth/token.ts b/api/src/services/auth/token.ts index cf5c0f1..ace6317 100644 --- a/api/src/services/auth/token.ts +++ b/api/src/services/auth/token.ts @@ -4,6 +4,7 @@ import { DatabaseService } from '../db/db'; import { AccessTokenPayload, accessTokenPayloadSchema, + accessTokenUserSchema, CommonTokenInfo, IDTokenPayload, idTokenPayloadSchema, @@ -18,12 +19,12 @@ import { } from '../../schemas/auth/tokens'; import { InvalidUserError, - InvalidUseType, - User, + InvalidUserType, + User as UserWithId, userSchema, - UserWithId, } from '../../schemas/auth/user'; import { randomUUID } from 'crypto'; +import { ObjectIdOrString } from '../../schemas/obj-id'; export class TokenService { private static _ACCESS_TOKEN_LIFESPAN_SECONDS: number; @@ -208,34 +209,39 @@ export class TokenService { * @param deviceId - The device ID to generate the tokens for * @returns The generated tokens */ - public async generateAllTokens(user: UserWithId, deviceId: string) { + public async generateAllTokens(userId: ObjectIdOrString, deviceId: string) { const secret: JWTSecret = { secret: process.env.JWT_SECRET!, // TODO: generate random one secretId: '1', // TODO: rotate keys and store in DB }; // check user exists - const userExists = await this.db.userRepository.userExists(user._id); + const userExists = await this.db.userRepository.userExists(userId); if (!userExists) { - throw new InvalidUserError({ type: InvalidUseType.DOES_NOT_EXIST }); + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); } // user._id, // true const generationId = await this.db.tokenRepository.getUserTokenGenerationId( - user._id.toString(), + userId, deviceId, true, ); + // get the user + const userInfo = await this.db.userRepository.getUserById(userId); + // TODO: get resources user can access + const user = accessTokenUserSchema.parse(userInfo); + const created = new Date(); // convert created to a number of seconds const createdSeconds = Math.floor(created.getTime() / 1000); const refreshTokenPayload: Omit = { - userId: user._id, + userId: userId.toString(), iat: createdSeconds, type: tokenTypeSchema.enum.REFRESH, jti: randomUUID(), @@ -243,8 +249,8 @@ export class TokenService { }; const accessTokenPayload: Omit = { - userId: user._id, - email: user.email, + userId: userId.toString(), + user, iat: createdSeconds, type: tokenTypeSchema.enum.ACCESS, jti: randomUUID(), @@ -253,8 +259,8 @@ export class TokenService { }; const idTokenPayload: Omit = { - userId: user._id, - email: user.email, + userId: userId.toString(), + user, type: tokenTypeSchema.enum.ID, generationId, iat: createdSeconds, @@ -472,7 +478,7 @@ export class TokenService { const userDoc = await this.db.userRepository.getUserById( oldRefreshPayload.userId, ); - let user: User; + let user: UserWithId; try { user = userSchema.parse(userDoc); } catch (e) { @@ -482,6 +488,8 @@ export class TokenService { // TODO: get user household access and roles + const accessUser = accessTokenUserSchema.parse(user); + const created = new Date(); // convert created to a number of seconds const createdSeconds = Math.floor(created.getTime() / 1000); @@ -496,7 +504,7 @@ export class TokenService { const accessTokenPayload: Omit = { userId: oldRefreshPayload.userId, - email: user.email, + user: accessUser, iat: createdSeconds, type: tokenTypeSchema.enum.ACCESS, jti: randomUUID(), @@ -506,7 +514,7 @@ export class TokenService { const idTokenPayload: Omit = { userId: oldRefreshPayload.userId, - email: user.email, + user: accessUser, type: tokenTypeSchema.enum.ID, generationId: oldRefreshPayload.generationId, iat: createdSeconds, @@ -661,10 +669,7 @@ export class TokenService { secretId: '1', // TODO: rotate keys and store in DB }; - const token = await this.generateMFAToken(mfaTokenPayload, secret); - - // encrypt - return await this.encryptToken(token); + return await this.generateMFAToken(mfaTokenPayload, secret); } /** @@ -693,6 +698,7 @@ export class TokenService { ); }, ); + const { success, data } = mfaTokenPayloadSchema.safeParse(result); if (!success) { diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index 8e1bd67..8a35d4d 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -1,9 +1,9 @@ -import assert from 'assert'; import { randomUUID } from 'crypto'; import { Db, MongoClient, ObjectId } from 'mongodb'; import { RedisClientType } from 'redis'; import { DatabaseRepository } from '../repo'; import { TokenService } from '../../auth/token'; +import { ObjectIdOrString, objectIdSchema } from '../../../schemas/obj-id'; /** * Document representing a blacklisted access token in the database @@ -111,7 +111,7 @@ export class TokenRepository extends DatabaseRepository { * @returns The user's token generation ID or null if it doesn't exist */ public async getUserTokenGenerationId( - userId: string, + userId: ObjectIdOrString, deviceId: string, ): Promise; @@ -123,7 +123,7 @@ export class TokenRepository extends DatabaseRepository { * @returns The user's token generation ID or null if it doesn't exist and upsert is false */ public async getUserTokenGenerationId( - userId: string, + userId: ObjectIdOrString, deviceId: string, upsert: false, ): Promise; @@ -135,7 +135,7 @@ export class TokenRepository extends DatabaseRepository { * @returns The user's token generation ID * */ public async getUserTokenGenerationId( - userId: string, + userId: ObjectIdOrString, deviceId: string, upsert: true, ): Promise; @@ -147,16 +147,14 @@ export class TokenRepository extends DatabaseRepository { * @returns The user's token generation ID or null if it doesn't exist and upsert is false */ public async getUserTokenGenerationId( - userId: string, + userId: ObjectIdOrString, deviceId: string, upsert?: boolean, ): Promise { - assert(ObjectId.isValid(userId), 'userId must be a valid ObjectId'); - // always get the latest token generation id const doc = await this.collection.findOne( { - userId: new ObjectId(userId), + userId: objectIdSchema.parse(userId), deviceId, blacklisted: false, $or: [{ expiry: { $exists: false } }, { expiry: undefined }], @@ -181,17 +179,15 @@ export class TokenRepository extends DatabaseRepository { * @returns the new token generation ID */ public async changeUserTokenGenerationId( - userId: string, + userId: ObjectIdOrString, deviceId: string, ): Promise { - assert(ObjectId.isValid(userId), 'userId must be a valid ObjectId'); - const expiry = this.tokenExpiry(); // update the latest document await this.collection.updateMany( { - userId: new ObjectId(userId), + userId: objectIdSchema.parse(userId), $or: [{ expiry: { $exists: false } }, { expiry: undefined }], }, { $set: { expiry } }, @@ -201,7 +197,7 @@ export class TokenRepository extends DatabaseRepository { const genId = this.generateTokenGenerationId(); const doc: TokenGenIdDoc = { - userId: new ObjectId(userId), + userId: objectIdSchema.parse(userId), tokenGenerationId: genId, deviceId, created: new Date(), @@ -265,13 +261,15 @@ export class TokenRepository extends DatabaseRepository { * used including access tokens. * @param userId - The ID of the user whose tokens should be blacklisted */ - public async blacklistTokenGenerationIds(userId: string): Promise { + public async blacklistTokenGenerationIds( + userId: ObjectIdOrString, + ): Promise { const expiry = this.tokenExpiry(); // begin blacklisting all tokens in the db but don't wait const dbPromise = this.collection .updateMany( - { userId: new ObjectId(userId), blacklisted: false }, + { userId: objectIdSchema.parse(userId), blacklisted: false }, [ { $set: { @@ -301,7 +299,7 @@ export class TokenRepository extends DatabaseRepository { // get all of them as well to blacklist in redis const docs = await this.collection .find( - { userId: new ObjectId(userId) }, + { userId: objectIdSchema.parse(userId) }, { projection: { tokenGenerationId: 1, expiry: 1 } }, ) .toArray(); diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index c9460db..0d40ebe 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -1,10 +1,23 @@ import { RedisClientType } from 'redis'; import { DatabaseRepository } from '../repo'; -import { Db, MongoClient, ObjectId } from 'mongodb'; -import { CreateUserData, User } from '../../../schemas/auth/user'; +import { Db, MongoClient } from 'mongodb'; +import { + CreateUserData, + Email, + InvalidUserError, + InvalidUserType, + User, + UserWithId, + userWithIdSchema, +} from '../../../schemas/auth/user'; +import { ObjectIdOrString, objectIdSchema } from '../../../schemas/obj-id'; +import { MFA, MFAFormattedKey } from '../../../schemas/auth/auth'; -// eslint-disable-next-line @typescript-eslint/no-empty-object-type -export interface UserDoc extends User {} +export interface UserDoc extends User { + mfaFormattedKey: string; + mfaConfirmed: boolean; + password: string; // TEMP: TODO: remove once implemented srp +} export class UserRepository extends DatabaseRepository { constructor(client: MongoClient, db: Db, redis: RedisClientType) { @@ -19,20 +32,37 @@ export class UserRepository extends DatabaseRepository { // } - public async createUser(data: CreateUserData) { - const result = await this.collection.insertOne(data); + /** + * Creates the user in the database and sets their MFA formatted key, and sets + * MFA to be unconfirmed. + */ + public async createUser( + data: CreateUserData, + mfaFormattedKey: MFAFormattedKey, + ) { + const result = await this.collection.insertOne({ + ...data, + mfaFormattedKey, + mfaConfirmed: false, + }); - return result.insertedId.toString(); + return result.insertedId; } - public async getUserById(_userId: string) { - await Promise.resolve(); - // TODO: implement - const user: UserDoc = { - _id: new ObjectId().toString(), - email: 'example@domain.com', - }; - return user; + /** + * Get's a user by their id + * @param userId - The id of the user to get + * @returns The user with the given id + * @throws Error if the user does not exist + */ + public async getUserById(userId: ObjectIdOrString): Promise { + const user = await this.collection.findOne({ + _id: objectIdSchema.parse(userId), + }); + if (!user) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return userWithIdSchema.parse(user); } /** @@ -40,9 +70,77 @@ export class UserRepository extends DatabaseRepository { * @param userId - The user to check * @returns true if the user exists, false otherwise */ - public async userExists(_userId: string): Promise { - // TODO implement - await Promise.resolve(); - return true; + public async userExists(userId: ObjectIdOrString): Promise { + const user = await this.collection.findOne( + { + _id: objectIdSchema.parse(userId), + }, + { projection: { _id: 1 } }, + ); + return !!user; + } + + /** + *Checks if a user exists by their email + * @param email - The email to check + * @returns true if the user exists, false otherwise + */ + public async userExistsEmail(email: Email): Promise { + const user = await this.collection.findOne( + { + email: email, + }, + { projection: { _id: 1 } }, + ); + return !!user; + } + + /** + * Checks if the user has confirmed MFA + * @param userId - The id of the user + * @returns true if the user has confirmed MFA, false otherwise + * @throws Error if the user does not exist + */ + public async isUserMFAConfirmed(userId: ObjectIdOrString): Promise { + const user = await this.collection.findOne( + { + _id: objectIdSchema.parse(userId), + }, + { projection: { mfaConfirmed: 1 } }, + ); + if (!user) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return user.mfaConfirmed ?? false; + } + + /** + * Get's the user's MFA formatted key + * @param userId - The id of the user + * @returns The user's MFA formatted key + * @throws Error if the user does not exist + */ + public async getUserMFA(userId: ObjectIdOrString): Promise { + const user = await this.collection.findOne( + { + _id: objectIdSchema.parse(userId), + }, + { projection: { mfaFormattedKey: 1, mfaConfirmed: 1 } }, + ); + if (!user) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return { formattedKey: user.mfaFormattedKey, confirmed: user.mfaConfirmed }; + } + + /** + * Set the user's MFA to be confirmed + * @param userId - The id of the user + */ + public async confirmUserMFA(userId: ObjectIdOrString): Promise { + await this.collection.updateOne( + { _id: objectIdSchema.parse(userId) }, + { $set: { mfaConfirmed: true } }, + ); } } diff --git a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 8e3ca5d..15cada4 100644 --- a/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -59,6 +59,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/app/lib/main.dart b/app/lib/main.dart index 20aeba5..0358e66 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -3,6 +3,8 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'models/mfa.dart'; +import 'models/user.dart'; import 'services/mfa.dart'; import 'widgets/mfa_code.dart'; diff --git a/app/lib/models/mfa.dart b/app/lib/models/mfa.dart new file mode 100644 index 0000000..8fa5f5e --- /dev/null +++ b/app/lib/models/mfa.dart @@ -0,0 +1,13 @@ +class MFAFormattedKey { + final String _formattedKey; + final String _qrCodeUri; + MFAFormattedKey(this._formattedKey, this._qrCodeUri); + + // from json + MFAFormattedKey.fromJson(Map json) + : _formattedKey = json['formattedKey'], + _qrCodeUri = json['uri']; + + String get formattedKey => _formattedKey; + String get qrCodeUri => _qrCodeUri; +} diff --git a/app/lib/models/user.dart b/app/lib/models/user.dart new file mode 100644 index 0000000..0c07520 --- /dev/null +++ b/app/lib/models/user.dart @@ -0,0 +1,29 @@ +enum Sex { + male, + female, +} + +class User { + final String id; + final String email; + final DateTime? dob; + final Sex? sex; + + User(this.id, this.email, {this.dob, this.sex}); + + User.fromJson(Map json) + : id = json['id'], + email = json['email'], + dob = json['dob'] != null ? DateTime.parse(json['dob']) : null, + sex = Sex.male; // TODO: check if 'm' or 'f' + + // convert to json + Map toJson() { + return { + 'id': id, + 'email': email, + 'dob': dob?.toIso8601String(), + 'sex': sex == Sex.male ? 'm' : 'f', + }; + } +} diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart new file mode 100644 index 0000000..b5f5281 --- /dev/null +++ b/app/lib/services/auth.dart @@ -0,0 +1 @@ +class AuthService {} diff --git a/app/lib/services/mfa.dart b/app/lib/services/mfa.dart index 3a86c94..de1d61c 100644 --- a/app/lib/services/mfa.dart +++ b/app/lib/services/mfa.dart @@ -2,43 +2,8 @@ import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; -// ! temp -// TODO: replace with actual user -class User { - final String id; - final String email; - - User(this.id, this.email); - - // from json - User.fromJson(Map json) - : id = json['id'], - email = json['email']; - - // convert to json - Map toJson() { - return { - 'id': id, - 'email': email, - }; - } -} - -// ! temp class -// TODO: replace with actual data class -class MFAFormattedKey { - final String _formattedKey; - final String _qrCodeUri; - MFAFormattedKey(this._formattedKey, this._qrCodeUri); - - // from json - MFAFormattedKey.fromJson(Map json) - : _formattedKey = json['formattedKey'], - _qrCodeUri = json['uri']; - - String get formattedKey => _formattedKey; - String get qrCodeUri => _qrCodeUri; -} +import '../models/mfa.dart'; +import '../models/user.dart'; // TODO: remove user args and get auth from auth service class MFAService { diff --git a/app/lib/widgets/mfa_code.dart b/app/lib/widgets/mfa_code.dart index 726fb2a..b35c56e 100644 --- a/app/lib/widgets/mfa_code.dart +++ b/app/lib/widgets/mfa_code.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:qr_flutter/qr_flutter.dart'; -import 'package:smartify/services/mfa.dart'; + +import '../models/mfa.dart'; // TODO: update style (this is just a placeholder for testing) class MFASetup extends StatelessWidget { From e337e3a1496c221371822b3e6c5c6fac0d60727c Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sun, 23 Feb 2025 15:05:02 +0400 Subject: [PATCH 07/25] login and verify mfa complete --- api/src/controllers/auth.ts | 299 +++++++++++++++++++---- api/src/routes/auth.ts | 13 +- api/src/schemas/auth/auth.ts | 23 +- api/src/schemas/auth/user.ts | 10 + api/src/services/auth/auth.ts | 50 +++- api/src/services/auth/mfa.ts | 11 +- api/src/services/db/repositories/user.ts | 56 ++++- 7 files changed, 380 insertions(+), 82 deletions(-) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 818037e..85679b1 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -1,25 +1,90 @@ -import { Request, Response } from 'express'; -import { CreateUserData, createUserSchema } from '../schemas/auth/user'; +import { Response } from 'express'; +import { + CreateUserData, + createUserSchema, + LoginData, +} from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; import { MFAService } from '../services/auth/mfa'; import { AuthenticatedRequest, - IncorrectMFACodeError, + MFAError, MFACode, mfaCodeSchema, + MFAErrorType, + IncorrectPasswordError, } from '../schemas/auth/auth'; import { TokenService } from '../services/auth/token'; import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; +const MFA_TOKEN_COOKIE_NAME = 'mfa-token'; +const ACCESS_TOKEN_COOKIE_NAME = 'access-token'; +const REFRESH_TOKEN_COOKIE_NAME = 'refresh-token'; +const ID_TOKEN_COOKIE_NAME = 'id-token'; + export class AuthController { - public static async register(req: Request, res: Response) { + private static writeAuthCookies( + res: Response, + accessToken: string, + refreshToken?: string, + idToken?: string, + ) { + res.cookie(ACCESS_TOKEN_COOKIE_NAME, accessToken, { + httpOnly: true, + secure: false, + expires: new Date( + Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + if (refreshToken) { + res.cookie(REFRESH_TOKEN_COOKIE_NAME, refreshToken, { + httpOnly: true, + secure: false, + expires: new Date( + Date.now() + TokenService.REFRESH_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + } + if (idToken) { + res.cookie(ID_TOKEN_COOKIE_NAME, idToken, { + httpOnly: false, + secure: false, + expires: new Date( + Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + } + } + + private static writeMFACookie(res: Response, mfaToken: string) { + res.cookie(MFA_TOKEN_COOKIE_NAME, mfaToken, { + httpOnly: true, + secure: false, + sameSite: 'none', + expires: new Date( + Date.now() + TokenService.MFA_TOKEN_LIFESPAN_SECONDS * 1000, + ), + }); + } + + private static deleteAllCookies(res: Response) { + this.deleteMFACookie(res); + this.deleteAuthCookies(res); + } + + private static deleteAuthCookies(res: Response) { + res.clearCookie(ACCESS_TOKEN_COOKIE_NAME); + res.clearCookie(REFRESH_TOKEN_COOKIE_NAME); + res.clearCookie(ID_TOKEN_COOKIE_NAME); + } + + private static deleteMFACookie(res: Response) { + res.clearCookie(MFA_TOKEN_COOKIE_NAME); + } + + public static async register(req: AuthenticatedRequest, res: Response) { try { - // TODO: remove and replace with require device id middleware - const deviceId = req.headers['x-device-id'] as string | undefined; - if (!deviceId) { - res.status(400).send({ error: 'Device id not found' }); - return; - } + const deviceId = req.deviceId!; // TODO: password SRP stuff @@ -37,6 +102,7 @@ export class AuthController { const as = new AuthService(); if (await as.userExistsEmail(data.email)) { + this.deleteAllCookies(res); res.status(400).send({ error: 'Invalid request' }); return; } @@ -44,7 +110,7 @@ export class AuthController { // create user const { user, mfaFormattedKey } = await as.registerUser(data); const ms = new MFAService(); - const mfaUri = ms.generateMFAUri(mfaFormattedKey, user.email); + const mfaQRUri = ms.generateMFAUri(mfaFormattedKey, user.email); // generate mfa token const mfaToken = await new TokenService().createMFAToken( @@ -52,16 +118,9 @@ export class AuthController { deviceId, ); - res.cookie('mfa-token', mfaToken, { - httpOnly: true, - secure: false, - sameSite: 'none', - expires: new Date( - Date.now() + TokenService.MFA_TOKEN_LIFESPAN_SECONDS * 1000, - ), - }); + AuthController.writeMFACookie(res, mfaToken); - res.status(201).send({ user, mfaFormattedKey, mfaQRUri: mfaUri }); + res.status(201).send({ user, mfaFormattedKey, mfaQRUri }); } catch (e) { console.error(e); res.status(500).send('Internal Server Error'); @@ -118,29 +177,8 @@ export class AuthController { await as.confirmUserMFA(mfaPayload.userId, code); const { accessToken, refreshToken, idToken } = await ts.generateAllTokens(mfaPayload.userId, deviceId); - - res.cookie('access-token', accessToken, { - httpOnly: true, - secure: false, - expires: new Date( - Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000, - ), - }); - res.cookie('refresh-token', refreshToken, { - httpOnly: true, - secure: false, - expires: new Date( - Date.now() + TokenService.REFRESH_TOKEN_LIFESPAN_SECONDS * 1000, - ), - }); - res.cookie('id-token', idToken, { - httpOnly: false, - secure: false, - expires: new Date( - Date.now() + TokenService.ACCESS_TOKEN_LIFESPAN_SECONDS * 1000, - ), - }); - res.clearCookie('mfa-token'); + this.deleteMFACookie(res); + this.writeAuthCookies(res, accessToken, refreshToken, idToken); res.status(200).send(); return; } catch (e) { @@ -149,21 +187,27 @@ export class AuthController { mfaPayload.userId, mfaPayload.deviceId, ); - res.cookie('mfa-token', newMfaToken, { - httpOnly: true, - secure: false, - sameSite: 'none', - expires: new Date( - Date.now() + TokenService.MFA_TOKEN_LIFESPAN_SECONDS * 1000, - ), - }); - if (e instanceof IncorrectMFACodeError) { - res.status(400).send({ error: 'Incorrect MFA Code' }); + this.writeMFACookie(res, newMfaToken); + if (e instanceof MFAError) { + switch (e.type) { + case MFAErrorType.INCORRECT_CODE: + res.status(400).send({ error: 'Incorrect MFA Code' }); + break; + case MFAErrorType.MFA_ALREADY_CONFIRMED: + res.status(400).send({ error: 'MFA already confirmed' }); + break; + case MFAErrorType.MFA_NOT_CONFIRMED: + // this should never happen + console.error('mfa not confirmed in confirm mfa'); + res.status(500).send({ error: 'Internal Server Error' }); + break; + } } else { console.error(e); res .status(400) - .send({ error: 'User does not exist or already confirmed MFA' }); + // user does not exist but don't tell client that + .send({ error: 'Invalid request' }); } } return; @@ -172,4 +216,151 @@ export class AuthController { res.status(500).send({ error: 'Internal Server Error' }); } } + + public static async login(req: AuthenticatedRequest, res: Response) { + try { + // TODO: password SRP stuff + + // validate data + let data: LoginData; + try { + data = createUserSchema.parse(req.body); + } catch (_) { + res.status(400).send({ error: 'Invalid body' }); + return; + } + + const as = new AuthService(); + try { + const { user, mfa } = await as.login(data); + + // generate mfa token to send back to user + const ts = new TokenService(); + const mfaToken = await ts.createMFAToken( + user._id.toString(), + req.deviceId!, + ); + + this.writeMFACookie(res, mfaToken); + + if (mfa.confirmed) { + res.status(204).send(); + } else { + const ms = new MFAService(); + const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); + res.status(200).send({ + formattedKey: mfa.formattedKey, + mfaQRUri, + }); + } + return; + } catch (e) { + if (e instanceof IncorrectPasswordError) { + res.status(400).send({ error: 'Incorrect email or password' }); + return; + } else { + throw e; + } + } + } catch (e) { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + } + } + + public static async verifyMFA(req: AuthenticatedRequest, res: Response) { + try { + // get mfa token + const mfaToken = req.cookies['mfa-token'] as string | undefined; + console.log(req.cookies); + + if (!mfaToken) { + res.status(400).send({ error: 'MFA token not found' }); + return; + } + + let code: MFACode; + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + code = mfaCodeSchema.parse(req.body.code); + } catch (_) { + res.status(400).send({ error: 'Invalid code' }); + return; + } + + // verify mfa token + const ts = new TokenService(); + let mfaPayload: MFATokenPayload; + try { + mfaPayload = await ts.verifyMFAToken(mfaToken); + console.log('mfaPayload:', mfaPayload); + } catch (e) { + if (e instanceof InvalidTokenError) { + res.status(401).send({ error: 'Invalid MFA token' }); + return; + } else { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + return; + } + } + + if (req.deviceId !== mfaPayload.deviceId) { + res.status(400).send({ error: 'Invalid device id' }); + return; + } + + const as = new AuthService(); + try { + const result = await as.verifyMFA(mfaPayload.userId, code); + if (!result) { + // mfa is valid, create a new one since the old one is now blacklisted + const newMfaToken = await ts.createMFAToken( + mfaPayload.userId, + mfaPayload.deviceId, + ); + this.writeMFACookie(res, newMfaToken); + res.status(400).send({ error: 'Incorrect MFA Code' }); + return; + } + + // mfa correct, generate new tokens + const { accessToken, refreshToken, idToken } = + await ts.generateAllTokens(mfaPayload.userId, mfaPayload.deviceId); + this.writeAuthCookies(res, accessToken, refreshToken, idToken); + this.deleteMFACookie(res); + res.status(200).send(); + return; + } catch (e) { + if (e instanceof MFAError) { + // mfa is valid, create a new one since the old one is now blacklisted + const newMfaToken = await ts.createMFAToken( + mfaPayload.userId, + mfaPayload.deviceId, + ); + this.writeMFACookie(res, newMfaToken); + switch (e.type) { + case MFAErrorType.INCORRECT_CODE: + res.status(400).send({ error: 'Incorrect MFA Code' }); + break; + case MFAErrorType.MFA_ALREADY_CONFIRMED: + // this should never happen + console.error('mfa already confirmed in verify mfa'); + res.status(500).send({ error: 'Internal Server Error' }); + break; + case MFAErrorType.MFA_NOT_CONFIRMED: + res.status(400).send({ error: 'MFA not confirmed' }); + break; + } + } else { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + } + return; + } + } catch (e) { + console.error(e); + res.status(500).send({ error: 'Internal server error' }); + } + } } diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index bfcddaf..f2c4257 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -3,11 +3,16 @@ import { AuthController } from '../controllers/auth'; import { requireDeviceId } from '../middleware/auth'; export const authRouter = Router(); +authRouter.use(requireDeviceId); -authRouter.post('/register', requireDeviceId, (req, res) => - AuthController.register(req, res), -); +authRouter.post('/register', (req, res) => AuthController.register(req, res)); -authRouter.post('/mfa/confirm', requireDeviceId, (req, res) => +authRouter.post('/mfa/confirm', (req, res) => AuthController.confirmMFA(req, res), ); + +authRouter.post('/login', (req, res) => AuthController.login(req, res)); + +authRouter.post('/mfa/verify', (req, res) => + AuthController.verifyMFA(req, res), +); diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index 2c73501..093db9c 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -26,9 +26,26 @@ export const mfaSchema = z.object({ }); export type MFA = z.infer; -export class IncorrectMFACodeError extends Error { +export enum MFAErrorType { + INCORRECT_CODE = 'INCORRECT_CODE', + MFA_ALREADY_CONFIRMED = 'MFA_ALREADY_CONFIRMED', + MFA_NOT_CONFIRMED = 'MFA_NOT_CONFIRMED', +} + +export class MFAError extends Error { + public readonly type: MFAErrorType; + constructor(type: MFAErrorType) { + super(`MFA ERROR: ${type}`); + this.name = 'MFAError'; + Object.setPrototypeOf(this, MFAError.prototype); + this.type = type; + } +} + +export class IncorrectPasswordError extends Error { constructor() { - super(`Incorrect MFA code`); - this.name = 'IncorrectMFACode'; + super('Incorrect Password'); + this.name = 'IncorrectPasswordError'; + Object.setPrototypeOf(this, IncorrectPasswordError.prototype); } } diff --git a/api/src/schemas/auth/user.ts b/api/src/schemas/auth/user.ts index c37395b..313e3e2 100644 --- a/api/src/schemas/auth/user.ts +++ b/api/src/schemas/auth/user.ts @@ -50,10 +50,14 @@ export enum InvalidUserType { /** Error for invalid users */ export class InvalidUserError extends Error { + public readonly type: InvalidUserType = InvalidUserType.OTHER; constructor(details?: { type?: InvalidUserType; message?: string }) { super(`Invalid User${details?.message ? `: ${details.message}` : ''}`); this.name = 'InvalidUserError'; Object.setPrototypeOf(this, InvalidUserError.prototype); + if (details?.type) { + this.type = details.type; + } } } @@ -66,3 +70,9 @@ export const createUserSchema = z.object({ sex: sexSchema.optional(), }); export type CreateUserData = z.infer; + +export const loginDataSchema = z.object({ + email: emailSchema, + password: z.string(), +}); +export type LoginData = z.infer; diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index a048e91..a18fd37 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -1,9 +1,18 @@ import { - IncorrectMFACodeError, + MFAError, MFAFormattedKey, MFACode, + MFA, + MFAErrorType, + IncorrectPasswordError, } from '../../schemas/auth/auth'; -import { CreateUserData, Email, UserWithId } from '../../schemas/auth/user'; +import { + CreateUserData, + Email, + LoginData, + UserWithId, + userWithIdSchema, +} from '../../schemas/auth/user'; import { ObjectIdOrString } from '../../schemas/obj-id'; import { DatabaseService } from '../db/db'; import { MFAService } from './mfa'; @@ -62,24 +71,43 @@ export class AuthService { public async confirmUserMFA(userId: string, code: MFACode) { const userMFA = await this.db.userRepository.getUserMFA(userId); if (userMFA.confirmed) { - throw new Error('User already confirmed MFA'); + throw new MFAError(MFAErrorType.MFA_ALREADY_CONFIRMED); } const ms = new MFAService(); - if (ms.verifyToken(userMFA.formattedKey, code)) { + if (ms.verifyCode(userMFA.formattedKey, code)) { // correct, mark mfa as confirmed await this.db.userRepository.confirmUserMFA(userId); } else { - throw new IncorrectMFACodeError(); + throw new MFAError(MFAErrorType.INCORRECT_CODE); } } public async getUserById(userId: ObjectIdOrString): Promise { return await this.db.userRepository.getUserById(userId); } -} -/** - * Secure Remote Password (SRP) service. Handles SRP verifications. - */ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -class SRP {} + public async login(data: LoginData): Promise<{ user: UserWithId; mfa: MFA }> { + const email = data.email; + const user = await this.db.userRepository.getUserDocByEmail(email); + const mfa: MFA = { + confirmed: user.mfaConfirmed, + formattedKey: user.mfaFormattedKey, + }; + + if (user.password !== data.password) { + throw new IncorrectPasswordError(); + } + + return { user: userWithIdSchema.parse(user), mfa }; + } + + public async verifyMFA(userId: ObjectIdOrString, code: MFACode) { + const mfa = await this.db.userRepository.getUserMFA(userId); + if (!mfa.confirmed) { + throw new MFAError(MFAErrorType.MFA_NOT_CONFIRMED); + } + const ms = new MFAService(); + const result = ms.verifyCode(mfa.formattedKey, code); + return result; + } +} diff --git a/api/src/services/auth/mfa.ts b/api/src/services/auth/mfa.ts index abaff6b..2cfb9e9 100644 --- a/api/src/services/auth/mfa.ts +++ b/api/src/services/auth/mfa.ts @@ -38,14 +38,11 @@ export class MFAService { /** * Verifies the user's MFA token is correct * @param formattedKey - The user's formatted key - * @param userToken - The token the user entered - * @returns True if the token is correct, false otherwise + * @param code - The code the user entered + * @returns True if the code is correct, false otherwise */ - public verifyToken( - formattedKey: MFAFormattedKey, - userToken: MFACode, - ): boolean { - const result = authenticator.verifyToken(formattedKey, userToken); + public verifyCode(formattedKey: MFAFormattedKey, code: MFACode): boolean { + const result = authenticator.verifyToken(formattedKey, code); return result != null; } diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 0d40ebe..2cdb74b 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -16,7 +16,7 @@ import { MFA, MFAFormattedKey } from '../../../schemas/auth/auth'; export interface UserDoc extends User { mfaFormattedKey: string; mfaConfirmed: boolean; - password: string; // TEMP: TODO: remove once implemented srp + password: string; } export class UserRepository extends DatabaseRepository { @@ -65,6 +65,22 @@ export class UserRepository extends DatabaseRepository { return userWithIdSchema.parse(user); } + /** + * Get's a user by their email + * @param email - The email of the user to get + * @returns The user with the given id + * @throws Error if the user does not exist + */ + public async getUserByEmail(email: Email): Promise { + const user = await this.collection.findOne({ + email: email, + }); + if (!user) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return userWithIdSchema.parse(user); + } + /** *Checks if a user exists by their id * @param userId - The user to check @@ -136,11 +152,45 @@ export class UserRepository extends DatabaseRepository { /** * Set the user's MFA to be confirmed * @param userId - The id of the user + * @returns true if the operation was successful */ - public async confirmUserMFA(userId: ObjectIdOrString): Promise { - await this.collection.updateOne( + public async confirmUserMFA(userId: ObjectIdOrString): Promise { + const result = await this.collection.updateOne( { _id: objectIdSchema.parse(userId) }, { $set: { mfaConfirmed: true } }, ); + return result.acknowledged && result.matchedCount === 1; + } + + // TEMP: TODO: remove this method + public async getUserPassword(email: Email): Promise { + const result = await this.collection.findOne( + { email: email }, + { projection: { password: 1 } }, + ); + if (!result) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return result.password; + } + + public async getUserDoc(userId: ObjectIdOrString): Promise { + const result = await this.collection.findOne({ + _id: objectIdSchema.parse(userId), + }); + if (!result) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return result; + } + + public async getUserDocByEmail(email: string): Promise { + const result = await this.collection.findOne({ + email: email, + }); + if (!result) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return result; } } From 54e3db1ac125d713feb845ad0a04acdc0b9ad03f Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sun, 23 Feb 2025 15:08:02 +0400 Subject: [PATCH 08/25] added check to see if user is already logged in --- api/src/controllers/auth.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 85679b1..da389dd 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -84,6 +84,14 @@ export class AuthController { public static async register(req: AuthenticatedRequest, res: Response) { try { + // check if they are already logged in + if (req.user) { + console.log(req.user); + + res.status(400).send({ error: 'Already logged in' }); + return; + } + const deviceId = req.deviceId!; // TODO: password SRP stuff @@ -219,6 +227,12 @@ export class AuthController { public static async login(req: AuthenticatedRequest, res: Response) { try { + // check if they are already logged in + if (req.user) { + res.status(400).send({ error: 'Already logged in' }); + return; + } + // TODO: password SRP stuff // validate data From 49d3ee89b4e75e7182c6f48cb364a153e19bdb34 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Mon, 24 Feb 2025 23:17:21 +0400 Subject: [PATCH 09/25] WIP completed registration and login apis, and SRP functionality implemented server side and client side (not fully tested yet) --- api/package-lock.json | 10 + api/src/controllers/auth.ts | 154 ++++++---- api/src/index.ts | 2 + api/src/middleware/bigint.ts | 69 +++++ api/src/routes/auth.ts | 8 +- api/src/schemas/auth/auth.ts | 31 ++ api/src/schemas/auth/user.ts | 39 ++- api/src/services/auth/auth.ts | 345 ++++++++++++++++++++-- api/src/services/db/db.ts | 11 +- api/src/services/db/repositories/token.ts | 4 +- api/src/services/db/repositories/user.ts | 174 +++++++++-- api/src/util.ts | 40 +++ api/tsconfig.eslint.json | 12 +- api/tsconfig.json | 2 +- app/lib/main.dart | 20 ++ app/lib/services/auth.dart | 130 ++++++++ app/pubspec.lock | 90 +++--- app/pubspec.yaml | 2 + 18 files changed, 991 insertions(+), 152 deletions(-) create mode 100644 api/src/middleware/bigint.ts create mode 100644 api/src/util.ts diff --git a/api/package-lock.json b/api/package-lock.json index 3ef2473..1ef0819 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "authenticator": "^1.1.5", + "big-integer": "^1.6.52", "cookie-parser": "^1.4.7", "dotenv": "^16.4.7", "express": "^4.21.2", @@ -2208,6 +2209,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index da389dd..883dacc 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -1,8 +1,11 @@ import { Response } from 'express'; import { - CreateUserData, - createUserSchema, - LoginData, + Email, + emailSchema, + InvalidUserError, + InvalidUserType, + loginDataSchema, + registerDataSchema, } from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; import { MFAService } from '../services/auth/mfa'; @@ -12,10 +15,10 @@ import { MFACode, mfaCodeSchema, MFAErrorType, - IncorrectPasswordError, } from '../schemas/auth/auth'; import { TokenService } from '../services/auth/token'; import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; +import { validateSchema } from '../util'; const MFA_TOKEN_COOKIE_NAME = 'mfa-token'; const ACCESS_TOKEN_COOKIE_NAME = 'access-token'; @@ -92,46 +95,73 @@ export class AuthController { return; } - const deviceId = req.deviceId!; - - // TODO: password SRP stuff - - // validate body - let data: CreateUserData; - try { - data = createUserSchema.parse(req.body); - } catch (_) { - res.status(400).send('Invalid body'); + const data = validateSchema(res, registerDataSchema, req.body); + if (!data) { return; } - - console.log(data); - const as = new AuthService(); + const { userId, formattedKey } = await as.initUserSRP(data); - if (await as.userExistsEmail(data.email)) { - this.deleteAllCookies(res); + res.status(201).send({ userId, formattedKey }); + return; + } catch (e) { + if ( + e instanceof InvalidUserError && + e.type === InvalidUserType.ALREADY_EXISTS + ) { + // don't tell the client the user doesn't already exist res.status(400).send({ error: 'Invalid request' }); return; } - // create user - const { user, mfaFormattedKey } = await as.registerUser(data); - const ms = new MFAService(); - const mfaQRUri = ms.generateMFAUri(mfaFormattedKey, user.email); + console.error(e); + res.status(500).send('Internal Server Error'); + return; + } + } - // generate mfa token - const mfaToken = await new TokenService().createMFAToken( - user._id.toString(), - deviceId, + public static async initiateAuthSession( + req: AuthenticatedRequest, + res: Response, + ) { + try { + // check if they are already logged in + if (req.user) { + console.log(req.user); + + res.status(400).send({ error: 'Already logged in' }); + return; + } + + const email: Email | undefined = validateSchema( + res, + emailSchema, + req.query.email, ); - AuthController.writeMFACookie(res, mfaToken); + if (!email) { + return; + } + + const as = new AuthService(); + + try { + const { salt, B } = await as.initAuthSession(email); - res.status(201).send({ user, mfaFormattedKey, mfaQRUri }); + res.status(200).send({ salt, B }); + } catch (e) { + if (e instanceof InvalidUserError) { + // don't tell the client the user doesn't exist + res.status(400).send({ error: 'Invalid request' }); + return; + } else { + throw e; + } + } } catch (e) { console.error(e); - res.status(500).send('Internal Server Error'); + + res.status(500).send({ error: 'Internal server error' }); return; } } @@ -233,48 +263,44 @@ export class AuthController { return; } - // TODO: password SRP stuff + const data = validateSchema(res, loginDataSchema, req.body); - // validate data - let data: LoginData; - try { - data = createUserSchema.parse(req.body); - } catch (_) { - res.status(400).send({ error: 'Invalid body' }); + if (!data) { return; } const as = new AuthService(); - try { - const { user, mfa } = await as.login(data); - - // generate mfa token to send back to user - const ts = new TokenService(); - const mfaToken = await ts.createMFAToken( - user._id.toString(), - req.deviceId!, - ); - this.writeMFACookie(res, mfaToken); + // get auth session + const session = await as.getAuthSession(data.email); - if (mfa.confirmed) { - res.status(204).send(); - } else { - const ms = new MFAService(); - const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); - res.status(200).send({ - formattedKey: mfa.formattedKey, - mfaQRUri, - }); - } + // check it exists + if (!session) { + res.status(404).send({ error: 'Auth session does not exist' }); return; - } catch (e) { - if (e instanceof IncorrectPasswordError) { - res.status(400).send({ error: 'Incorrect email or password' }); - return; - } else { - throw e; - } + } + + const { user, mfa, Ms } = await as.login({ + ...data, + ...session, + verifier: BigInt(session.verifier), + }); + + // generate mfa token to send back to user + const ts = new TokenService(); + const mfaToken = await ts.createMFAToken( + user._id.toString(), + req.deviceId!, + ); + + this.writeMFACookie(res, mfaToken); + + if (mfa.confirmed) { + res.status(200).send({ Ms }); + } else { + const ms = new MFAService(); + const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); + res.status(200).send({ Ms, formattedKey: mfa.formattedKey, mfaQRUri }); } } catch (e) { console.error(e); diff --git a/api/src/index.ts b/api/src/index.ts index 3eff97a..0e8662a 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -5,6 +5,7 @@ import { logMiddleware } from './middleware/log'; import { authRouter } from './routes/auth'; import { householdRouter } from './routes/household'; import { parseAuth } from './middleware/auth'; +import { bigIntToHexMiddleware } from './middleware/bigint'; dotenv.config(); @@ -15,6 +16,7 @@ app.use(express.json()); app.use(cookieParser()); app.use(logMiddleware); app.use(parseAuth); +app.use(bigIntToHexMiddleware); const router = express.Router(); diff --git a/api/src/middleware/bigint.ts b/api/src/middleware/bigint.ts new file mode 100644 index 0000000..e6bda1a --- /dev/null +++ b/api/src/middleware/bigint.ts @@ -0,0 +1,69 @@ +import { Request, Response, NextFunction } from 'express'; + +/** + * Recursively converts any BigInt values in an object to base-16 strings + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function convertBigIntsToHex(obj: unknown): any { + if (obj === null || obj === undefined) { + return obj; + } + + if (typeof obj === 'bigint') { + return `0x${obj.toString(16)}`; + } + + if (Array.isArray(obj)) { + // Only create a new array if there are BigInts to convert + const converted = obj.map(convertBigIntsToHex); + return obj.some((item) => typeof item === 'bigint') ? converted : obj; + } + + if (obj && typeof obj === 'object' && !Buffer.isBuffer(obj)) { + // Only create a new object if there are BigInts to convert + const entries = Object.entries(obj); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + const convertedEntries = entries.map(([key, value]) => [ + key, + convertBigIntsToHex(value), + ]); + + // Check if any values were actually converted + const hasChanges = convertedEntries.some( + ([_, value], index) => value !== entries[index][1], + ); + + return hasChanges ? Object.fromEntries(convertedEntries) : obj; + } + + return obj; +} + +/** + * Express middleware that converts BigInt values to hex strings before JSON serialization + */ +export function bigIntToHexMiddleware( + req: Request, + res: Response, + next: NextFunction, +) { + // Store the original send function + const originalSend = res.send; + + // Override the send function + res.send = function (body: unknown): Response { + try { + // Convert any BigInts in the response body to hex strings + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const convertedBody = convertBigIntsToHex(body); + + // Call the original send with the converted body + return originalSend.call(this, convertedBody); + } catch (error) { + console.error('Error in bigIntToHexMiddleware:', error); + return originalSend.call(this, body); + } + }; + + next(); +} diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index f2c4257..6551a42 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -7,11 +7,17 @@ authRouter.use(requireDeviceId); authRouter.post('/register', (req, res) => AuthController.register(req, res)); +authRouter.post('/init', (req, res) => + AuthController.initiateAuthSession(req, res), +); + +authRouter.post('/login', (req, res) => AuthController.login(req, res)); + authRouter.post('/mfa/confirm', (req, res) => AuthController.confirmMFA(req, res), ); -authRouter.post('/login', (req, res) => AuthController.login(req, res)); +// TODO: get mfa formatted key route (only if mfa is unconfirmed) authRouter.post('/mfa/verify', (req, res) => AuthController.verifyMFA(req, res), diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index 093db9c..d38ed10 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -26,6 +26,37 @@ export const mfaSchema = z.object({ }); export type MFA = z.infer; +const bigIntTransormed = z + .union([z.string(), z.bigint()]) + .transform((val) => (typeof val === 'string' ? BigInt(val) : val)); + +export const srpSessionSchema = z.object({ + /** the session id */ + sessionId: z.string(), + /** The user's salt */ + salt: z.string(), + /** The user's verifier */ + verifier: z.string(), + // TODO: add bigint validation in schema + /* Server private key */ + b: bigIntTransormed, + /* Server public key */ + B: bigIntTransormed, + /* Client public key */ + A: bigIntTransormed.optional(), +}); + +export type SRPSession = z.infer; + +export const srpSessionJSONSchema = srpSessionSchema.extend({ + b: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), + B: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), + A: bigIntTransormed.transform((val) => `0x${val.toString(16)}`).optional(), +}); +export type SRPJSONSessoin = z.infer; + +/* Error types */ + export enum MFAErrorType { INCORRECT_CODE = 'INCORRECT_CODE', MFA_ALREADY_CONFIRMED = 'MFA_ALREADY_CONFIRMED', diff --git a/api/src/schemas/auth/user.ts b/api/src/schemas/auth/user.ts index 313e3e2..716e1b2 100644 --- a/api/src/schemas/auth/user.ts +++ b/api/src/schemas/auth/user.ts @@ -45,6 +45,7 @@ export enum InvalidUserType { INVALID_ID = 'Invalid ID', INVALID_EMAIL = 'Invalid Email', DOES_NOT_EXIST = 'Does Not Exist', + ALREADY_EXISTS = 'Already Exists', OTHER = 'Other', } @@ -63,16 +64,44 @@ export class InvalidUserError extends Error { /* Request schemas */ -export const createUserSchema = z.object({ - email: z.string().email(), - password: z.string(), +const bigIntTransformed = z + .union([z.string(), z.bigint()]) + .refine( + (val) => { + if (typeof val === 'string') { + try { + BigInt(val); + return true; + } catch (_) { + return false; + } + } + return true; + }, + { message: 'Value must be a string or a BigInt' }, + ) + .transform((val) => (typeof val === 'string' ? BigInt(val) : val)); + +//export const initUserDataSchema = z.object({ +// email: emailSchema, +//}); + +export const registerDataSchema = z.object({ + email: emailSchema, dob: dobSchema.optional(), sex: sexSchema.optional(), + salt: z.string(), + verifier: bigIntTransformed, }); -export type CreateUserData = z.infer; + +export type RegisterData = z.infer; export const loginDataSchema = z.object({ + /** The user's email */ email: emailSchema, - password: z.string(), + /** The client's public key */ + A: bigIntTransformed, + /** The client's proof */ + Mc: bigIntTransformed, }); export type LoginData = z.infer; diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index a18fd37..6a22738 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -1,21 +1,27 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ import { MFAError, - MFAFormattedKey, MFACode, MFA, MFAErrorType, IncorrectPasswordError, + srpSessionSchema, + SRPSession, } from '../../schemas/auth/auth'; import { - CreateUserData, Email, + InvalidUserError, + InvalidUserType, LoginData, + RegisterData, UserWithId, userWithIdSchema, } from '../../schemas/auth/user'; import { ObjectIdOrString } from '../../schemas/obj-id'; +import { bigIntModPow } from '../../util'; import { DatabaseService } from '../db/db'; import { MFAService } from './mfa'; +import crypto, { createHash, Hash } from 'crypto'; export class AuthService { protected readonly db: DatabaseService; @@ -25,23 +31,96 @@ export class AuthService { } /** - * Registers a user with our system - * @param data - The user's information - * @returns The user that was created and their MFA formatted key + * Register the user with the system and initiate their authentication + * information + * @param data - The user's data + * @param salt - The user's randomly generated salt + * @param verifier - The verifier generated from the user's password by the + * client + * @returns The user's id and their MFA formatted key + * @throws InvalidUserError if the user already exists */ - public async registerUser( - data: CreateUserData, - ): Promise<{ user: UserWithId; mfaFormattedKey: MFAFormattedKey }> { + public async initUserSRP(data: RegisterData) { + // check user doesn't already exists + const userExists = await this.db.userRepository.userExistsEmail(data.email); + if (userExists) { + throw new InvalidUserError({ type: InvalidUserType.ALREADY_EXISTS }); + } + const ms = new MFAService(); const formattedKey = ms.generateMFAFormattedKey(); const userId = await this.db.userRepository.createUser(data, formattedKey); + return { userId, formattedKey }; + } + + //public async getUserAuth(email: Email) { + //} + + /** + * Initialises an SRP auth session for the user + * @param email - The user's email + * @returns The user's session id, salt, and the public key generated by the + * server (B) + * @throws An error if the user does not exist + * @throws An error if the serer failed to create the session + */ + public async initAuthSession(email: Email): Promise<{ + salt: string; + B: bigint; + }> { + console.log('generating server keys'); + + const { b, B } = SRP.generateServerKeys(); + + const { salt, verifier } = + await this.db.userRepository.getUserSRPCredentials(email); + console.log('got salt and verifier'); + + // store session + const session = srpSessionSchema.parse({ + sessionId: email, + salt, + verifier, + b, + B, + }); + // use email as session id to only have one session id per user + await this.db.srpSessionRepository.storeSRPAuthSession(email, session); + + console.log('session stored'); + return { - user: await this.db.userRepository.getUserById(userId), - mfaFormattedKey: formattedKey, + salt, + B, }; } + /** + * Get the user's SRP auth session + * @param email - The user's email + * @returns The SRP auth session if it exists + */ + public async getAuthSession(email: Email): Promise { + return await this.db.srpSessionRepository.getSRPAuthSession(email); + } + + ///** + // * Registers a user with our system + // * @param data - The user's information + // * @returns The user that was created and their MFA formatted key + // */ + //public async registerUser( + // data: CreateUserData, + //): Promise<{ user: UserWithId; mfaFormattedKey: MFAFormattedKey }> { + // const userId = await this.db.userRepository.createUser(data, formattedKey); + // + // return { + // user: await this.db.userRepository.getUserById(userId), + // mfaFormattedKey: formattedKey, + // }; + //} + /** * Check if a user with the provided email exists * @param email - The email to check @@ -82,26 +161,49 @@ export class AuthService { } } + /** + * Get a user by their id + * @param userId - The user's id + * @returns The user + */ public async getUserById(userId: ObjectIdOrString): Promise { return await this.db.userRepository.getUserById(userId); } - public async login(data: LoginData): Promise<{ user: UserWithId; mfa: MFA }> { - const email = data.email; - const user = await this.db.userRepository.getUserDocByEmail(email); + //public async login(data: LoginData): Promise<{ user: UserWithId; mfa: MFA }> { + public async login(data: { + email: string; + salt: string; + verifier: bigint; + A: bigint; + b: bigint; + B: bigint; + Mc: bigint; + }) { + const serverProof = SRP.verifyClientProof(data); + + // method didn't throw, client proof correct + + const user = await this.db.userRepository.getUserDocByEmail(data.email); const mfa: MFA = { confirmed: user.mfaConfirmed, formattedKey: user.mfaFormattedKey, }; - if (user.password !== data.password) { - throw new IncorrectPasswordError(); - } - - return { user: userWithIdSchema.parse(user), mfa }; + return { user: userWithIdSchema.parse(user), mfa, Ms: serverProof }; } - public async verifyMFA(userId: ObjectIdOrString, code: MFACode) { + /** + * Verify the MFA code entered by the user is correct + * @param userId - The id of the user + * @param code - The MFA code the user entered + * @returns true if correct, false otherwise + * @throws An MFAError if the user has not confirmed setting up MFA + */ + public async verifyMFA( + userId: ObjectIdOrString, + code: MFACode, + ): Promise { const mfa = await this.db.userRepository.getUserMFA(userId); if (!mfa.confirmed) { throw new MFAError(MFAErrorType.MFA_NOT_CONFIRMED); @@ -111,3 +213,208 @@ export class AuthService { return result; } } + +// TODO: implement the safeguards (checking for == 0, etc) + +/** A class to handle the SRP protocol's cryptographic operations */ +class SRP { + public static generateServerKeys(): { b: bigint; B: bigint } { + // TODO: add k * v + const N = BigInt('0x' + SRP_N_HEX); + console.log('got N'); + + const g = BigInt(SRP_GENERATOR); + console.log('got g'); + + const b = BigInt(`0x${crypto.randomBytes(32).toString('hex')}`); + console.log('got b'); + + //const B = g ** b % N; + const B = bigIntModPow(g, b, N); + console.log('got B'); + + return { b, B }; + } + + // TODO: implement k + /** + * Verify the client SRP proof + * @param email - The user's email + * @param salt - The user's salt + * @param verifier - The user's verifier + * @param A - The client's public key + * @param b - The server's private key + * @param B - The server's public key + * @param Mc - The client's proof + * @returns The server's proof for the client to verify + * @throws an InvalidPasswordError if the client proof is incorrect + */ + public static verifyClientProof(data: { + email: string; + salt: string; + verifier: bigint; + A: bigint; + b: bigint; + B: bigint; + Mc: bigint; + }): string { + // calculate u = H(A | B) + const u = BigInt( + `0x${this.hash(data.A.toString(16) + data.B.toString(16)).digest('hex')}`, + ); + + // calculate shared secret S = (A * v^u) ^ b % N + const g = BigInt(SRP_GENERATOR); + const N = BigInt(`0x${SRP_N_HEX}`); + const S = (data.A * data.verifier ** u) ** data.b % N; + //const S = bigIntModPow(A * bigIntModPow(verifier, u, N), b, N); + + // calculate session key K = H(S) + const K = this.hash(S).digest('hex'); + + // calculate server proof Ms = H(H(N) xor H(g) | H(email) | salt | A | B | K) + const HN = createHash('sha256').update(N.toString(16)).digest(); + const Hg = createHash('sha256').update(g.toString(16)).digest(); + const He = this.hash(data.email).digest('hex'); + + const expectedMc = this.hash( + this.xorBuffers(HN, Hg).toString('hex') + + He + + data.salt + + data.A.toString(16) + + data.B.toString(16) + + K, + ).digest('hex'); + + if (BigInt(expectedMc) !== data.Mc) { + throw new IncorrectPasswordError(); + } + + // generate server proof Ms = H(A | Mc | K) + const Ms = this.hash(data.A.toString(16) + data.Mc.toString(16) + K).digest( + 'hex', + ); + return Ms; + } + + protected static hash(val: bigint | string): Hash { + if (typeof val === 'bigint') { + return createHash('sha256').update(val.toString(16)); + } else { + return createHash('sha256').update(val); + } + } + + protected static xorBuffers(a: Buffer, b: Buffer): Buffer { + const result = Buffer.alloc(Math.max(a.length, b.length)); + for (let i = 0; i < result.length; i++) { + result[i] = a[i] ^ b[i]; + } + return result; + } +} + +// TEMP: class to simulate client side till srp implemented on the client side +// TODO: remove this +class ClientSRP { + public static generateSalt(): string { + return crypto.randomBytes(16).toString('hex'); + } + + public static generateVerifier(salt: string, password: string): string { + // Calculate x = H(salt | H(P)) + + // First, calculate H(P) + const innerHash = crypto.createHash('sha256'); + innerHash.update(password); + const innerHashResult = innerHash.digest(); + + // Then calculate H(salt | H(P)) + const outerHash = crypto.createHash('sha256'); + outerHash.update(Buffer.from(salt, 'hex')); + outerHash.update(innerHashResult); + const x = BigInt('0x' + outerHash.digest('hex')); + + // Calculate v = g^x mod N + const N = BigInt('0x' + SRP_N_HEX); + const g = BigInt(SRP_GENERATOR); + const v = g ** x % N; + + // Return the verifier as a hex string + return v.toString(16); + } + + public static generateClientKeys(): { a: bigint; A: bigint } { + const N = BigInt('0x' + SRP_N_HEX); + const g = BigInt(SRP_GENERATOR); + const a = BigInt(crypto.randomBytes(32).toString('hex')); + const A = g ** a % N; + return { a, A }; + } + + // TODO: implement k + public static calculateProof( + email: string, + password: string, + salt: string, + B: bigint, + a: bigint, + A: bigint, + ) { + // calculate x = H(salt | H(password)) + const hashPassword = this.hash(password); + const x = BigInt(this.hash(salt + hashPassword)); + + // calculate u = H(A | B) + const u = BigInt(this.hash(A.toString(16) + B.toString(16))); + + // calculate shared secret S = (B - k * g^x) ^ (a + u * x) % N + const g = BigInt(SRP_GENERATOR); + const N = BigInt('0x' + SRP_N_HEX); + const S = (B - g ** x) ** (a + u * x) % N; + + // calculate session key K = H(S) + const K = this.hash(S); + + // calculate client proof Mc = H(H(N) xor H(g) | H(email) | salt | A | B | K) + const HN = createHash('sha256').update(N.toString(16)).digest(); + const Hg = createHash('sha256').update(g.toString(16)).digest(); + const He = this.hash(email); + + const Mc = this.hash( + this.xorBuffers(HN, Hg).toString('hex') + + He + + salt + + A.toString(16) + + B.toString(16) + + K, + ); + + return { + A, + Mc: BigInt(Mc), + }; + } + + protected static hash(val: bigint | string): string { + if (typeof val === 'bigint') { + return createHash('sha256').update(val.toString(16)).digest('hex'); + } else { + return createHash('sha256').update(val).digest('hex'); + } + } + + protected static xorBuffers(a: Buffer, b: Buffer): Buffer { + const result = Buffer.alloc(Math.max(a.length, b.length)); + for (let i = 0; i < result.length; i++) { + result[i] = a[i] ^ b[i]; + } + return result; + } +} + +const SRP_N_HEX = + `AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73` + .trim() + .replace(/[\s\r\n]+/g, ''); +const SRP_GENERATOR = 2; diff --git a/api/src/services/db/db.ts b/api/src/services/db/db.ts index 65b5b9d..9f9dbaf 100644 --- a/api/src/services/db/db.ts +++ b/api/src/services/db/db.ts @@ -4,7 +4,7 @@ import { MFABlacklistRepository, TokenRepository, } from './repositories/token'; -import { UserRepository } from './repositories/user'; +import { SRPSessionRepository, UserRepository } from './repositories/user'; import { createClient, RedisClientType } from 'redis'; import { HouseholdRepository } from './repositories/household'; @@ -17,6 +17,7 @@ export class DatabaseService { // Repositories private _userRepository: UserRepository; + private _srpRepository: SRPSessionRepository; private _tokenRepository: TokenRepository; private _accessBlacklistRepository: AccessBlacklistRepository; private _mfaBlacklistRepository: MFABlacklistRepository; @@ -72,6 +73,11 @@ export class DatabaseService { DatabaseService.db, DatabaseService.redis, ); + this._srpRepository = new SRPSessionRepository( + DatabaseService.client, + DatabaseService.db, + DatabaseService.redis, + ); this._tokenRepository = new TokenRepository( DatabaseService.client, @@ -99,6 +105,9 @@ export class DatabaseService { get userRepository(): UserRepository { return this._userRepository; } + get srpSessionRepository(): SRPSessionRepository { + return this._srpRepository; + } get tokenRepository(): TokenRepository { return this._tokenRepository; diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index 8a35d4d..e32ad65 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -83,7 +83,7 @@ const MFA_BLACKLIST_COLLECTION_NAME = 'mfa_token_blacklist'; * that way no revoked access tokens get unrevoked) */ export class TokenRepository extends DatabaseRepository { protected static readonly GENERATION_IDS_BLACKLIST_REDIS_KEY = - 'token-blacklist' as const; + 'token-blacklist'; constructor(client: MongoClient, db: Db, redis: RedisClientType) { super(client, db, TOKENS_COLLECTION_NAME, redis); @@ -365,7 +365,7 @@ export class TokenRepository extends DatabaseRepository { export class AccessBlacklistRepository extends DatabaseRepository { protected static readonly ACCESS_BLACKLIST_REDIS_KEY = - 'access-token-blacklist' as const; + 'access-token-blacklist'; constructor(client: MongoClient, db: Db, redis: RedisClientType) { super(client, db, ACCESS_BLACKLIST_COLLECTION_NAME, redis); diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 2cdb74b..4c4a378 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -1,27 +1,41 @@ import { RedisClientType } from 'redis'; import { DatabaseRepository } from '../repo'; -import { Db, MongoClient } from 'mongodb'; +import { Db, MongoClient, ObjectId } from 'mongodb'; import { - CreateUserData, Email, InvalidUserError, InvalidUserType, + RegisterData, User, UserWithId, userWithIdSchema, } from '../../../schemas/auth/user'; import { ObjectIdOrString, objectIdSchema } from '../../../schemas/obj-id'; -import { MFA, MFAFormattedKey } from '../../../schemas/auth/auth'; +import { + MFA, + MFAFormattedKey, + SRPJSONSessoin, + SRPSession, + srpSessionJSONSchema, + srpSessionSchema, +} from '../../../schemas/auth/auth'; export interface UserDoc extends User { + /** The user's mfa formatted key */ mfaFormattedKey: string; + /** Whether the user has confirmed correctly setting up MFA */ mfaConfirmed: boolean; - password: string; + /** The user's salt for SRP */ + salt: string; + /** The user's verifier for SRP */ + verifier: string; } +const USER_COLLECTION_NAME = 'users'; + export class UserRepository extends DatabaseRepository { constructor(client: MongoClient, db: Db, redis: RedisClientType) { - super(client, db, 'users', redis); + super(client, db, USER_COLLECTION_NAME, redis); } // TODO: implement configure collection @@ -33,15 +47,22 @@ export class UserRepository extends DatabaseRepository { } /** - * Creates the user in the database and sets their MFA formatted key, and sets - * MFA to be unconfirmed. + * Initialises a document for the user in the database containing the user's + * authentication information and their data (email, etc.). Also sets the + * user's mfa as unconfirmed. + * @param email - The user's email + * @param salt - The user's salt + * @param verifier - The user's verifier + * @param mfaFormattedKey - The user's MFA formatted key + * @returns The user's id */ public async createUser( - data: CreateUserData, + data: RegisterData, mfaFormattedKey: MFAFormattedKey, - ) { + ): Promise { const result = await this.collection.insertOne({ ...data, + verifier: `0x${data.verifier.toString()}`, mfaFormattedKey, mfaConfirmed: false, }); @@ -49,6 +70,27 @@ export class UserRepository extends DatabaseRepository { return result.insertedId; } + /** + * Get the user's SRP credentials + * @param email - The user's email + * @returns the user's salt and verifier + * @throws An InvalidUserError if the user does not exist + */ + public async getUserSRPCredentials( + email: Email, + ): Promise<{ salt: string; verifier: string }> { + const result = await this.collection.findOne( + { + email, + }, + { projection: { salt: 1, verifier: 1 } }, + ); + if (!result) { + throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); + } + return { salt: result.salt, verifier: result.verifier }; + } + /** * Get's a user by their id * @param userId - The id of the user to get @@ -162,18 +204,14 @@ export class UserRepository extends DatabaseRepository { return result.acknowledged && result.matchedCount === 1; } - // TEMP: TODO: remove this method - public async getUserPassword(email: Email): Promise { - const result = await this.collection.findOne( - { email: email }, - { projection: { password: 1 } }, - ); - if (!result) { - throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); - } - return result.password; - } - + /** + * Get a user's document. This method should be used carefully, and it's + * results must be filtered and should never be returned tot he client without + * preprocessing as it contains sensitive authentication information for + * server-side use only. + * @param userId - The user's id + * @returns The user's document in the database + */ public async getUserDoc(userId: ObjectIdOrString): Promise { const result = await this.collection.findOne({ _id: objectIdSchema.parse(userId), @@ -184,6 +222,13 @@ export class UserRepository extends DatabaseRepository { return result; } + /** + * Get the user's document by their email. Similar to getUserDoc but uses the + * user's email. This method also should not be used to return data to the + * client without preprocessing. + * @param email - The user's email + * @returns The user's document + */ public async getUserDocByEmail(email: string): Promise { const result = await this.collection.findOne({ email: email, @@ -194,3 +239,90 @@ export class UserRepository extends DatabaseRepository { return result; } } + +interface SRPSessionDoc extends SRPJSONSessoin { + _id?: ObjectId; +} + +const SRP_SESSION_COLLECTION_NAME = 'srp-sessions'; +const SRP_SESSION_KEY_PREFIX = 'srp-auth-session'; +const SRP_SESSION_EXPIRY_SECONDS = 60 * 20; // 20 minutes + +export class SRPSessionRepository extends DatabaseRepository { + constructor(client: MongoClient, db: Db, redis: RedisClientType) { + super(client, db, SRP_SESSION_COLLECTION_NAME, redis); + } + + // TODO: implement configure collection + public async configureCollection(): Promise { + await this.collection.createIndex({ sessionId: 1 }, { unique: true }); + } + + public async storeSRPAuthSession(sessionId: string, session: SRPSession) { + // convert bigints to strings + const sessionJSON = srpSessionJSONSchema.parse(session); + + // store session in redis + const redisPromise = this.redis.set( + `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, + JSON.stringify(srpSessionJSONSchema.parse(sessionJSON)), + { + EX: SRP_SESSION_EXPIRY_SECONDS, + }, + ); + + // store session in db (fail-safe) using upsert + const mongoPromise = this.collection.updateOne( + { sessionId: sessionId }, + { $set: sessionJSON }, + { upsert: true }, + ); + + try { + await redisPromise; + return; + } catch (e) { + console.error( + 'Failed to store SRP session in redis. trying mongo. error:', + e, + ); + try { + await mongoPromise; + } catch (mongoError) { + console.error('Failed to store SRP session in mongo:', mongoError); + throw new Error( + 'Failed to store SRP session in both Redis and MongoDB', + ); + } + } + } + + public async getSRPAuthSession( + sessionId: string, + ): Promise { + const redisResult = await this.redis.get( + `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, + ); + if (redisResult) { + try { + console.log( + 'redis result:', + srpSessionSchema.parse(JSON.parse(redisResult)), + ); + + return srpSessionSchema.parse(JSON.parse(redisResult)); + } catch (e) { + console.error('Failed to parse SRP session from redis', e); + // ignore, try mongo + } + } + const mongoResult = await this.collection.findOne({ + sessionId, + }); + if (!mongoResult) { + return null; + } + console.log('mongo result:', srpSessionSchema.parse(mongoResult)); + return srpSessionSchema.parse(mongoResult); + } +} diff --git a/api/src/util.ts b/api/src/util.ts new file mode 100644 index 0000000..8929d27 --- /dev/null +++ b/api/src/util.ts @@ -0,0 +1,40 @@ +import { Response } from 'express'; +import { z } from 'zod'; + +/** + * Validates the schema in a request, and returns the parsed object. + * Will send a 400 response if the schema is invalid. + * @returns The schema if valid, undefined if invalid + */ +export function validateSchema( + res: Response, + schema: T, + data: unknown, +): z.infer | undefined { + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return schema.parse(data); + } catch (_) { + res.status(400).send('Invalid Request'); + return undefined; + } +} + +export function bigIntModPow(base: bigint, exp: bigint, mod: bigint): bigint { + let result = BigInt(1); + base = base % mod; + while (exp > BigInt(0)) { + if (exp % BigInt(2) === BigInt(1)) { + result = (result * base) % mod; + } + exp = exp >> BigInt(1); + base = (base * base) % mod; + } + return result; +} + +// test bigintmodpow +export function testBigIntModPow() { + console.log(bigIntModPow(BigInt(2), BigInt(3), BigInt(5))); // Should output 3n (2^3 = 8, 8 mod 5 = 3) + console.log(bigIntModPow(BigInt(3), BigInt(4), BigInt(7))); // Should output 4n (3^4 = 81, 81 mod 7 = 4) +} diff --git a/api/tsconfig.eslint.json b/api/tsconfig.eslint.json index 9b84481..cbd86eb 100644 --- a/api/tsconfig.eslint.json +++ b/api/tsconfig.eslint.json @@ -1,5 +1,15 @@ { "extends": "./tsconfig.json", - "include": ["src/**/*", "jest.config.ts", "eslint.config.mjs"], + "include": [ + "src/**/*", + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.js", + "src/**/*.jsx", + "jest.config.ts", + "eslint.config.mjs", + "src/util.d.ts" + ], "exclude": ["node_modules", "dist"] } diff --git a/api/tsconfig.json b/api/tsconfig.json index c015247..f0e5404 100644 --- a/api/tsconfig.json +++ b/api/tsconfig.json @@ -108,6 +108,6 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": ["src/**/*", "test"], + "include": ["src/**/*", "src/**/*.d.ts", "test"], "exclude": ["node_modules", "**/*.spec.ts"] } diff --git a/app/lib/main.dart b/app/lib/main.dart index 0358e66..a50957f 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:smartify/services/auth.dart'; import 'models/mfa.dart'; import 'models/user.dart'; @@ -20,6 +21,25 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { + const password = 'password'; + final salt = SRP.generateSalt(); + debugPrint('salt: $salt\n'); + final verifier = SRP.generateVerifier(salt, password); + debugPrint('verifier: $verifier\n'); + final keys = SRP.generateKeys(); + debugPrint('keys: a: ${keys.a}, A: ${keys.A}\n'); + final B = SRP.generateKeys().A; + debugPrint('B: $B\n'); + final proof = SRP.calculateProof( + email: 'example@domain.com', + password: password, + a: keys.a, + A: keys.A, + B: B, + salt: salt, + ); + debugPrint('proof: $proof\n'); + return MaterialApp( title: 'Flutter Demo', theme: ThemeData( diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index b5f5281..816f400 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -1 +1,131 @@ +// ignore_for_file: unused_local_variable, unused_element, unused_field, non_constant_identifier_names, unused_element_parameter + +import 'dart:convert'; // for the utf8.encode method +import 'dart:math'; +import 'package:crypto/crypto.dart' as crypto; +import 'package:convert/convert.dart'; + class AuthService {} + +// TODO: implement the safeguards (checking for == 0, etc) + +/// Client SRP methdos +class SRP { + static String SRP_N_HEX = (""" + AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73""") + .trim() + .replaceAll(RegExp(r'[\s\r\n]+'), ''); + static int SRP_GENERATOR = 2; + + static List _randomBytes(int length) { + var random = Random.secure(); + var values = List.generate(length, (i) => random.nextInt(256)); + return values; + } + + /// hash a String and return it's digest + static crypto.Digest _hashString(String s) { + return crypto.sha256.convert(utf8.encode(s)); + } + + /// has a BigInt and return it's digest + static crypto.Digest _hashBigInt(BigInt b) { + return crypto.sha256.convert(utf8.encode(b.toRadixString(16))); + } + + /// Generate a random salt + static String generateSalt() => hex.encode(_randomBytes(16)); + + /// Generate a random verifier + static String generateVerifier(String salt, String password) { + // Calculate x = H(salt | H(P)) + + // H(P) + final innerHash = crypto.sha256.convert(utf8.encode(password)); + final outerHash = + crypto.sha256.convert([...hex.decode(salt), ...innerHash.bytes]); + + final x = BigInt.parse('0x${outerHash.toString()}'); + + // calculate v = g^x mod N + final N = BigInt.parse('0x$SRP_N_HEX'); + final g = BigInt.from(SRP_GENERATOR); + final v = g.modPow(x, N); + + return v.toRadixString(16); + } + + /// Generate the SRP Client keys + static ({BigInt a, BigInt A}) generateKeys() { + final N = BigInt.parse('0x$SRP_N_HEX'); + final g = BigInt.from(SRP_GENERATOR); + final a = BigInt.parse(hex.encode(_randomBytes(32)), radix: 16); + final A = g.modPow(a, N); + return (a: a, A: A); + } + + // TODO: implement k + static BigInt calculateProof({ + required String email, + required String password, + required String salt, + required BigInt B, + required BigInt a, + required BigInt A, + }) { + // calculate x = H(salt | H(password)) + final hashPassword = _hashString(password).toString(); + final x = BigInt.parse('0x${_hashString('$salt$hashPassword').toString()}'); + + // calculate u = H(A | B) + final u = BigInt.parse( + '0x${_hashString(A.toRadixString(16) + B.toRadixString(16)).toString()}'); + + // calculate shared secret S = (B - k * g^x) ^ (a + u * x) mod N + final g = BigInt.from(SRP_GENERATOR); + final N = BigInt.parse('0x$SRP_N_HEX'); + // modPow is used due to avoid a large number + final S = (B - g.modPow(x, N)).modPow(a + u * x, N); + + // calculate shared session key K = H(S) + final K = _hashBigInt(S).toString(); + + // calculate client proof Mc = H(H(N) xor H(g) | H(email) | salt | A | B | K) + final HN = _hashBigInt(N).bytes; + final Hg = _hashBigInt(g).bytes; + final He = _hashString(email).toString(); + + final Mc = _hashString( + hex.encode(_xorLists(HN, Hg)) + + He + + salt + + A.toRadixString(16) + + B.toRadixString(16) + + K, + ); + + return BigInt.parse('0x$Mc'); + } + + /// Verify the server proof [Ms] by calculating it ourselves using the client + /// public key [A], the client proof [Mc] and the shared session key [K]. + static bool verifyServerProof({ + required BigInt A, + required BigInt Mc, + required String K, + required String Ms, + }) { + final expectedMs = + _hashString(A.toRadixString(16) + Mc.toRadixString(16) + K).toString(); + + return Ms == expectedMs; + } + + /// xor two lists of integers + /// + /// If the lists have different lengths, the result will have the length of + /// the shortest list + static _xorLists(List a, List b) { + return List.generate(min(a.length, b.length), (i) => a[i] ^ b[i]); + } +} diff --git a/app/pubspec.lock b/app/pubspec.lock index e0fa520..48cd14a 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -5,42 +5,58 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" collection: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" + convert: + dependency: "direct main" + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + crypto: + dependency: "direct main" + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" cupertino_icons: dependency: "direct main" description: @@ -53,10 +69,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" flutter: dependency: "direct main" description: flutter @@ -103,18 +119,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -135,10 +151,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -151,18 +167,18 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" path: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" qr: dependency: transitive description: @@ -188,50 +204,50 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" typed_data: dependency: transitive description: @@ -252,10 +268,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.3.1" web: dependency: transitive description: @@ -265,5 +281,5 @@ packages: source: hosted version: "1.1.0" sdks: - dart: ">=3.5.4 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 1a0a2ce..75a6811 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -37,6 +37,8 @@ dependencies: http: ^1.2.2 flutter_dotenv: ^5.2.1 qr_flutter: ^4.1.0 + crypto: ^3.0.6 + convert: ^3.1.2 dev_dependencies: flutter_test: From f9df907600d39da1f66b05580227345b536f7f36 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Wed, 26 Feb 2025 17:35:35 +0400 Subject: [PATCH 10/25] stash --- api/src/controllers/auth.ts | 57 ++++++++---- api/src/index.ts | 22 ++++- api/src/schemas/auth/auth.ts | 5 +- api/src/schemas/auth/tokens.ts | 3 + api/src/services/auth/auth.ts | 84 +++++++++++------ api/src/services/auth/token.ts | 4 + api/src/services/db/repositories/token.ts | 104 ++++++++++++---------- api/src/services/db/repositories/user.ts | 63 ++++++++++++- app/lib/main.dart | 18 ++-- app/lib/services/auth.dart | 69 ++++++++++---- 10 files changed, 302 insertions(+), 127 deletions(-) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 883dacc..be2ca55 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -15,6 +15,7 @@ import { MFACode, mfaCodeSchema, MFAErrorType, + IncorrectPasswordError, } from '../schemas/auth/auth'; import { TokenService } from '../services/auth/token'; import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; @@ -224,6 +225,7 @@ export class AuthController { const newMfaToken = await ts.createMFAToken( mfaPayload.userId, mfaPayload.deviceId, + mfaPayload.formattedKey, ); this.writeMFACookie(res, newMfaToken); if (e instanceof MFAError) { @@ -280,27 +282,42 @@ export class AuthController { return; } - const { user, mfa, Ms } = await as.login({ - ...data, - ...session, - verifier: BigInt(session.verifier), - }); - - // generate mfa token to send back to user - const ts = new TokenService(); - const mfaToken = await ts.createMFAToken( - user._id.toString(), - req.deviceId!, - ); + try { + const { user, mfa, Ms } = await as.login({ + ...data, + ...session, + verifier: BigInt(session.verifier), + }); + + // generate mfa token to send back to user + const ts = new TokenService(); + const mfaToken = await ts.createMFAToken( + user._id.toString(), + req.deviceId!, + mfa.confirmed ? undefined : mfa.formattedKey, + ); - this.writeMFACookie(res, mfaToken); + this.writeMFACookie(res, mfaToken); - if (mfa.confirmed) { - res.status(200).send({ Ms }); - } else { - const ms = new MFAService(); - const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); - res.status(200).send({ Ms, formattedKey: mfa.formattedKey, mfaQRUri }); + if (mfa.confirmed) { + res.status(200).send({ Ms }); + } else { + const ms = new MFAService(); + const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); + res + .status(200) + .send({ Ms, formattedKey: mfa.formattedKey, mfaQRUri }); + } + } catch (e) { + if ( + e instanceof InvalidUserError || + e instanceof IncorrectPasswordError + ) { + res.status(400).send({ error: 'Incorrect email or password' }); + return; + } else { + throw e; + } } } catch (e) { console.error(e); @@ -358,6 +375,7 @@ export class AuthController { const newMfaToken = await ts.createMFAToken( mfaPayload.userId, mfaPayload.deviceId, + mfaPayload.formattedKey, ); this.writeMFACookie(res, newMfaToken); res.status(400).send({ error: 'Incorrect MFA Code' }); @@ -377,6 +395,7 @@ export class AuthController { const newMfaToken = await ts.createMFAToken( mfaPayload.userId, mfaPayload.deviceId, + mfaPayload.formattedKey, ); this.writeMFACookie(res, newMfaToken); switch (e.type) { diff --git a/api/src/index.ts b/api/src/index.ts index 0e8662a..49060a3 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -6,6 +6,8 @@ import { authRouter } from './routes/auth'; import { householdRouter } from './routes/household'; import { parseAuth } from './middleware/auth'; import { bigIntToHexMiddleware } from './middleware/bigint'; +// eslint-disable-next-line no-restricted-imports +import { DatabaseService } from './services/db/db'; dotenv.config(); @@ -29,6 +31,20 @@ router.use('/households', householdRouter); app.use('/api', router); -app.listen(port, () => { - console.log(`Server running on port ${port}`); -}); +async function start() { + const db = new DatabaseService(); + await Promise.all([ + db.accessBlacklistRepository.loadBlacklistToCache(), + db.mfaBlacklistRepository.loadBlacklistToCache(), + db.srpSessionRepository.loadSessionsToCache(), + ]); + + console.log('Blacklists loaded'); + + app.listen(port, () => { + console.log(`Server running on port ${port}`); + }); +} + +// eslint-disable-next-line @typescript-eslint/no-floating-promises +start(); diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index d38ed10..dd5faa9 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -7,7 +7,7 @@ export interface AuthenticatedRequest extends Request { deviceId?: string | undefined; } -const mfaFormattedKeySchema = z.string(); +export const mfaFormattedKeySchema = z.string(); export type MFAFormattedKey = z.infer; /** The MFA Code */ @@ -52,8 +52,9 @@ export const srpSessionJSONSchema = srpSessionSchema.extend({ b: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), B: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), A: bigIntTransormed.transform((val) => `0x${val.toString(16)}`).optional(), + createdAt: z.coerce.date(), }); -export type SRPJSONSessoin = z.infer; +export type SRPJSONSession = z.infer; /* Error types */ diff --git a/api/src/schemas/auth/tokens.ts b/api/src/schemas/auth/tokens.ts index 870ce30..2081f57 100644 --- a/api/src/schemas/auth/tokens.ts +++ b/api/src/schemas/auth/tokens.ts @@ -1,5 +1,6 @@ import { z } from 'zod'; import { userWithIdSchema } from './user'; +import { mfaFormattedKeySchema } from './auth'; export const jwtSecretSchema = z.object({ /** The secret to sign the JWT with */ @@ -85,6 +86,8 @@ export const mfaTokenPayloadSchema = commonTokenInfoSchema.extend({ jti: z.string().min(1), /** The device ID of the device the token is for */ deviceId: z.string().min(1), + /** MFA formatted key */ + formattedKey: mfaFormattedKeySchema.optional(), }); export type MFATokenPayload = z.infer; diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index 6a22738..4038a6b 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -69,14 +69,13 @@ export class AuthService { salt: string; B: bigint; }> { - console.log('generating server keys'); - - const { b, B } = SRP.generateServerKeys(); - const { salt, verifier } = await this.db.userRepository.getUserSRPCredentials(email); console.log('got salt and verifier'); + console.log('generating server keys'); + const { b, B } = SRP.generateServerKeys(BigInt(verifier)); + // store session const session = srpSessionSchema.parse({ sessionId: email, @@ -218,20 +217,22 @@ export class AuthService { /** A class to handle the SRP protocol's cryptographic operations */ class SRP { - public static generateServerKeys(): { b: bigint; B: bigint } { - // TODO: add k * v + public static generateServerKeys(verifier: bigint): { b: bigint; B: bigint } { const N = BigInt('0x' + SRP_N_HEX); - console.log('got N'); - const g = BigInt(SRP_GENERATOR); - console.log('got g'); + + // Calculate k = H(N | g) + const k = BigInt( + `0x${this.hash(N.toString(16) + g.toString(16)).digest('hex')}`, + ); const b = BigInt(`0x${crypto.randomBytes(32).toString('hex')}`); - console.log('got b'); - //const B = g ** b % N; - const B = bigIntModPow(g, b, N); - console.log('got B'); + // Calculate B = k*v + g^b % N + + const kv = (k * verifier) % N; + const gb = bigIntModPow(g, b, N); + const B = (kv + gb) % N; return { b, B }; } @@ -258,16 +259,36 @@ class SRP { B: bigint; Mc: bigint; }): string { + const N = BigInt(`0x${SRP_N_HEX}`); + const g = BigInt(SRP_GENERATOR); + + // Calculate k = H(N | g) + const k = BigInt( + `0x${this.hash(N.toString(16) + g.toString(16)).digest('hex')}`, + ); + console.log('k:', k.toString(16)); + // calculate u = H(A | B) const u = BigInt( `0x${this.hash(data.A.toString(16) + data.B.toString(16)).digest('hex')}`, ); - // calculate shared secret S = (A * v^u) ^ b % N - const g = BigInt(SRP_GENERATOR); - const N = BigInt(`0x${SRP_N_HEX}`); - const S = (data.A * data.verifier ** u) ** data.b % N; - //const S = bigIntModPow(A * bigIntModPow(verifier, u, N), b, N); + console.log('Server-side values:'); + console.log('A:', data.A.toString(16)); + console.log('B:', data.B.toString(16)); + console.log('u:', u.toString(16)); + console.log('verifier:', data.verifier.toString(16)); + console.log('b:', data.b.toString(16)); + + // Calculate S = (A * v^u)^b % N + const v_u = bigIntModPow(data.verifier, u, N); + console.log('v_u:', v_u.toString(16)); + + const A_vu = (data.A * v_u) % N; + console.log('A_vu:', A_vu.toString(16)); + + const S = bigIntModPow(A_vu, data.b, N); + console.log('S:', S.toString(16)); // calculate session key K = H(S) const K = this.hash(S).digest('hex'); @@ -277,16 +298,25 @@ class SRP { const Hg = createHash('sha256').update(g.toString(16)).digest(); const He = this.hash(data.email).digest('hex'); - const expectedMc = this.hash( - this.xorBuffers(HN, Hg).toString('hex') + - He + - data.salt + - data.A.toString(16) + - data.B.toString(16) + - K, - ).digest('hex'); + const xorHex = this.xorBuffers(HN, Hg).toString('hex'); + const AHex = data.A.toString(16); + const BHex = data.B.toString(16); + + // Ensure hex values have even length for consistent encoding + const AHexPadded = AHex.padStart((AHex.length + 1) & ~1, '0'); + const BHexPadded = BHex.padStart((BHex.length + 1) & ~1, '0'); + + const combined = `${xorHex}${He}${data.salt}${AHexPadded}${BHexPadded}${K}`; + console.log('Server combined string:', combined); + + const expectedMc = this.hash(combined).digest('hex'); + + const serverMcBigInt = BigInt(`0x${expectedMc}`); + if (serverMcBigInt !== data.Mc) { + console.log('server Mc:', expectedMc); + console.log('client Mc:', data.Mc.toString(16)); + console.log('server Mc (BigInt):', serverMcBigInt.toString(16)); - if (BigInt(expectedMc) !== data.Mc) { throw new IncorrectPasswordError(); } diff --git a/api/src/services/auth/token.ts b/api/src/services/auth/token.ts index ace6317..7f19ecd 100644 --- a/api/src/services/auth/token.ts +++ b/api/src/services/auth/token.ts @@ -25,6 +25,7 @@ import { } from '../../schemas/auth/user'; import { randomUUID } from 'crypto'; import { ObjectIdOrString } from '../../schemas/obj-id'; +import { MFAFormattedKey } from '../../schemas/auth/auth'; export class TokenService { private static _ACCESS_TOKEN_LIFESPAN_SECONDS: number; @@ -647,11 +648,13 @@ export class TokenService { * Creates a new MFA token for a user * @param userId - The user's ID to create the token for * @param deviceId - The device ID to create the token for + * @param formattedKey - The user's mfa formatted key * @returns The generated MFA token */ public async createMFAToken( userId: string, deviceId: string, + formattedKey?: MFAFormattedKey, ): Promise { const created = new Date(); const createdSeconds = Math.floor(created.getTime() / 1000); @@ -662,6 +665,7 @@ export class TokenService { deviceId, iat: createdSeconds, jti: randomUUID(), + formattedKey, }; const secret: JWTSecret = { diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index e32ad65..e849298 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -371,6 +371,32 @@ export class AccessBlacklistRepository extends DatabaseRepository { + const now = new Date(); + const docs = await this.collection + .find({ + expiry: { $gt: now }, + }) + .toArray(); + + console.log( + `Loading ${docs.length} access tokens to Redis blacklist cache`, + ); + + const promises = docs.map((doc) => { + return this.cacheAccessBlacklist( + doc.jti, + Math.floor(doc.expiry.getTime() / 1000), + ); + }); + + await Promise.all(promises); + } + public async configureCollection(): Promise { // create collection // @@ -445,32 +471,12 @@ export class AccessBlacklistRepository extends DatabaseRepository { try { - // Check Redis cache first - const existsInCache = await this.isAccessTokenBlacklistedCache(jti); - if (existsInCache) { - return true; - } + // Only check Redis cache + return await this.isAccessTokenBlacklistedCache(jti); } catch (e) { console.error('Error checking redis cache for access token blacklist', e); - } - - // Not found in Redis, check MongoDB - const doc = await this.collection.findOne({ jti }); - - if (doc === null) { return false; } - - // Found in DB, add to Redis cache to avoid future cache misses - // Don't await as this is non-blocking - this.cacheAccessBlacklist( - jti, - Math.floor(doc.expiry.getTime() / 1000), - ).catch((e) => - console.warn('Error caching access token blacklist status', e), - ); - - return true; } /** @@ -492,6 +498,33 @@ export class MFABlacklistRepository extends DatabaseRepository { + const now = new Date(); + const docs = await this.collection + .find({ + expiry: { $gt: now }, + }) + .toArray(); + + console.log(`Loading ${docs.length} MFA tokens to Redis blacklist cache`); + + const promises = docs.map((doc) => { + const ttlSeconds = Math.ceil((doc.expiry.getTime() - Date.now()) / 1000); + if (ttlSeconds <= 0) return Promise.resolve(); + + const key = `${MFABlacklistRepository.MFA_BLACKLIST_KEY}:${doc.jti}`; + return this.redis.set(key, '1', { + EX: ttlSeconds, + }); + }); + + await Promise.all(promises); + } + public async configureCollection(): Promise { // create collection // @@ -551,37 +584,12 @@ export class MFABlacklistRepository extends DatabaseRepository { try { - // Check Redis cache first const key = `${MFABlacklistRepository.MFA_BLACKLIST_KEY}:${jti}`; const existsInCache = await this.redis.get(key); - if (existsInCache !== null) { - return true; - } + return existsInCache !== null; } catch (e) { console.error('Error checking redis cache for MFA token blacklist', e); - } - - // Not found in Redis, check MongoDB - const doc = await this.collection.findOne({ jti }); - - if (doc === null) { return false; } - - // Found in DB, add to Redis cache to avoid future cache misses - // Don't await as this is non-blocking - const ttlSeconds = Math.ceil((doc.expiry.getTime() - Date.now()) / 1000); - if (ttlSeconds > 0) { - const key = `${MFABlacklistRepository.MFA_BLACKLIST_KEY}:${jti}`; - this.redis - .set(key, '1', { - EX: ttlSeconds, - }) - .catch((e) => - console.warn('Error caching MFA token blacklist status', e), - ); - } - - return true; } } diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 4c4a378..140a6c0 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -14,7 +14,7 @@ import { ObjectIdOrString, objectIdSchema } from '../../../schemas/obj-id'; import { MFA, MFAFormattedKey, - SRPJSONSessoin, + SRPJSONSession, SRPSession, srpSessionJSONSchema, srpSessionSchema, @@ -240,7 +240,7 @@ export class UserRepository extends DatabaseRepository { } } -interface SRPSessionDoc extends SRPJSONSessoin { +interface SRPSessionDoc extends SRPJSONSession { _id?: ObjectId; } @@ -253,14 +253,69 @@ export class SRPSessionRepository extends DatabaseRepository { super(client, db, SRP_SESSION_COLLECTION_NAME, redis); } + /** + * Load all valid SRP sessions from MongoDB into Redis cache. + * This should be called on application startup to ensure Redis has all active sessions. + * Sessions older than SRP_SESSION_EXPIRY_SECONDS are considered expired and won't be loaded. + */ + public async loadSessionsToCache(): Promise { + const cutoffTime = new Date(Date.now() - SRP_SESSION_EXPIRY_SECONDS * 1000); + + // Find all sessions that were created within the expiry window + const docs = await this.collection + .find({ + createdAt: { $gt: cutoffTime }, + }) + .toArray(); + + console.log(`Loading ${docs.length} SRP sessions to Redis cache`); + + const promises = docs.map(async (doc) => { + if (!doc.sessionId) return; + + // Calculate remaining TTL + const createdAt = + doc.createdAt instanceof Date ? doc.createdAt : new Date(doc.createdAt); + const elapsedSeconds = Math.floor( + (Date.now() - createdAt.getTime()) / 1000, + ); + const remainingTTL = SRP_SESSION_EXPIRY_SECONDS - elapsedSeconds; + + // Only cache if there's remaining time + if (remainingTTL <= 0) return; + + try { + await this.redis.set( + `${SRP_SESSION_KEY_PREFIX}:${doc.sessionId}`, + JSON.stringify(srpSessionJSONSchema.parse(doc)), + { + EX: remainingTTL, + }, + ); + } catch (e) { + console.error(`Failed to cache SRP session ${doc.sessionId}:`, e); + } + }); + + await Promise.all(promises); + } + // TODO: implement configure collection public async configureCollection(): Promise { - await this.collection.createIndex({ sessionId: 1 }, { unique: true }); + await Promise.all([ + // Create unique index on sessionId + this.collection.createIndex({ sessionId: 1 }, { unique: true }), + // Create index on createdAt for expire queries + this.collection.createIndex({ createdAt: 1 }), + ]); } public async storeSRPAuthSession(sessionId: string, session: SRPSession) { // convert bigints to strings - const sessionJSON = srpSessionJSONSchema.parse(session); + const sessionJSON = srpSessionJSONSchema.parse({ + ...session, + createdAt: new Date(), + }); // store session in redis const redisPromise = this.redis.set( diff --git a/app/lib/main.dart b/app/lib/main.dart index a50957f..1ae8838 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -22,16 +22,19 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { const password = 'password'; - final salt = SRP.generateSalt(); - debugPrint('salt: $salt\n'); - final verifier = SRP.generateVerifier(salt, password); - debugPrint('verifier: $verifier\n'); + //final salt = SRP.generateSalt(); + const salt = 'e6eb7979923ebb117785a56ab84f94ff'; + //debugPrint('salt: $salt\n'); + //final verifier = SRP.generateVerifier(salt, password); + //debugPrint('verifier: $verifier\n'); final keys = SRP.generateKeys(); debugPrint('keys: a: ${keys.a}, A: ${keys.A}\n'); - final B = SRP.generateKeys().A; + //final B = SRP.generateKeys().A; + final B = BigInt.parse( + "0x45d1c104c0f75bb2366a8bc2088a66853c7b1d5646b20595ef412e26269181d78e488ac619b8129cac9ec99bb992f6acb1bc4b2d97879067b48977482f405f7e6101e6b1da7d86adb62a43eb38a07a07b4ea139060f3f61605bc023316a89c1b56b1977f0ef996cedf2612244d5303e6b4b068ee2013635a70af4eae7b5e1f8aaf3301d6d2fb4b235cda3133ae6ddaececcde90fdc1e19e1f289167fcbc9a926bcd08f3dab1505754d58305c62089cec6199f998d3a1ec06800293fb2c5c5b954844ba903aa77a7ae33b272c1c68e54fa25d8830fe02d0b0de74210435a4bab833b1db0ed7aa798ef38181adee3aca5c53aec0d73642dc0763075a5e74e40491"); debugPrint('B: $B\n'); final proof = SRP.calculateProof( - email: 'example@domain.com', + email: 'hady@gmail.com', password: password, a: keys.a, A: keys.A, @@ -39,6 +42,9 @@ class MyApp extends StatelessWidget { salt: salt, ); debugPrint('proof: $proof\n'); + debugPrint(''); + debugPrint( + 'hex\n\nA: 0x${keys.A.toRadixString(16)}\nproof (Mc): 0x${proof.toRadixString(16)}'); return MaterialApp( title: 'Flutter Demo', diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index 816f400..e13a6b8 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -64,7 +64,6 @@ class SRP { return (a: a, A: A); } - // TODO: implement k static BigInt calculateProof({ required String email, required String password, @@ -73,21 +72,48 @@ class SRP { required BigInt a, required BigInt A, }) { - // calculate x = H(salt | H(password)) + final N = BigInt.parse('0x$SRP_N_HEX'); + final g = BigInt.from(SRP_GENERATOR); + + // Calculate k = H(N | g) - keep this part + final k = BigInt.parse( + '0x${_hashString(N.toRadixString(16) + g.toRadixString(16)).toString()}'); + print('k: ${k.toRadixString(16)}'); + + // Calculate x = H(salt | H(password)) - keep this part final hashPassword = _hashString(password).toString(); final x = BigInt.parse('0x${_hashString('$salt$hashPassword').toString()}'); - // calculate u = H(A | B) + // Calculate u = H(A | B) - keep this part final u = BigInt.parse( '0x${_hashString(A.toRadixString(16) + B.toRadixString(16)).toString()}'); - // calculate shared secret S = (B - k * g^x) ^ (a + u * x) mod N - final g = BigInt.from(SRP_GENERATOR); - final N = BigInt.parse('0x$SRP_N_HEX'); - // modPow is used due to avoid a large number - final S = (B - g.modPow(x, N)).modPow(a + u * x, N); + print('Client-side values:'); + print('A: ${A.toRadixString(16)}'); + print('B: ${B.toRadixString(16)}'); + print('u: ${u.toRadixString(16)}'); + print('x: ${x.toRadixString(16)}'); + print('a: ${a.toRadixString(16)}'); + + // Calculate v = g^x mod N + final v = g.modPow(x, N); + + // MODIFY THIS SECTION: Match the server S calculation exactly + // Calculate S = (B - k * g^x)^(a + u*x) % N + final g_x = g.modPow(x, N); + final k_g_x = (k * g_x) % N; + + // Ensure positive modulo if B < k*g^x + final B_minus_kgx = ((B - k_g_x) % N + N) % N; + + // Calculate a + u*x + final a_plus_ux = (a + u * x) % (N - BigInt.one); - // calculate shared session key K = H(S) + // Finally calculate S + final S = B_minus_kgx.modPow(a_plus_ux, N); + print('S: ${S.toRadixString(16)}'); + + // Calculate shared session key K = H(S) final K = _hashBigInt(S).toString(); // calculate client proof Mc = H(H(N) xor H(g) | H(email) | salt | A | B | K) @@ -95,16 +121,23 @@ class SRP { final Hg = _hashBigInt(g).bytes; final He = _hashString(email).toString(); - final Mc = _hashString( - hex.encode(_xorLists(HN, Hg)) + - He + - salt + - A.toRadixString(16) + - B.toRadixString(16) + - K, - ); + // Ensure consistent hex encoding between client and server + final xorResult = _xorLists(HN, Hg); + final xorHex = hex.encode(xorResult); + final AHex = A.toRadixString(16); + final BHex = B.toRadixString(16); + + // Ensure hex values have even length for consistent encoding + final AHexPadded = AHex.padLeft((AHex.length + 1) & ~1, '0'); + final BHexPadded = BHex.padLeft((BHex.length + 1) & ~1, '0'); + + final combined = '$xorHex$He$salt$AHexPadded$BHexPadded$K'; + print('Client combined string: $combined'); - return BigInt.parse('0x$Mc'); + // Convert to BigInt first, then to hex string to match server format + final Mc = _hashString(combined); + final McHex = Mc.toString(); + return BigInt.parse('0x$McHex'); } /// Verify the server proof [Ms] by calculating it ourselves using the client From 1650a14c157917a8551674f723bac96e4804dd78 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Thu, 27 Feb 2025 11:52:52 +0400 Subject: [PATCH 11/25] WIP stash --- api/src/index.ts | 45 ++- api/src/services/auth/auth.ts | 387 ++++++++++++---------- api/src/services/auth/srp-debug.ts | 266 +++++++++++++++ api/src/services/auth/srp-utils.ts | 80 +++++ app/lib/debug/srp_debugger.dart | 63 ++++ app/lib/main.dart | 46 ++- app/lib/services/auth.dart | 512 +++++++++++++++++++++-------- app/lib/utils/srp_debug_utils.dart | 0 8 files changed, 1061 insertions(+), 338 deletions(-) create mode 100644 api/src/services/auth/srp-debug.ts create mode 100644 api/src/services/auth/srp-utils.ts create mode 100644 app/lib/debug/srp_debugger.dart create mode 100644 app/lib/utils/srp_debug_utils.dart diff --git a/api/src/index.ts b/api/src/index.ts index 49060a3..ee8ad91 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -8,6 +8,8 @@ import { parseAuth } from './middleware/auth'; import { bigIntToHexMiddleware } from './middleware/bigint'; // eslint-disable-next-line no-restricted-imports import { DatabaseService } from './services/db/db'; +import { SRP } from './services/auth/auth'; +import { modPow } from './services/auth/srp-utils'; dotenv.config(); @@ -46,5 +48,44 @@ async function start() { }); } -// eslint-disable-next-line @typescript-eslint/no-floating-promises -start(); +//start(); + +function testSRP() { + const email = 'hady@gmail.com'; + const password = 'password'; + const salt = 'e6eb7979923ebb117785a56ab84f94ff'; + let verifier: bigint; + + { + const x = SRP.calculateX(email, password, salt); + //g.modPow(x, N) + verifier = modPow(SRP.g, x, SRP.N); + } + + // server keys + //const { b, B } = SRP.generateServerKeys(verifier); + const bString = + '39083a31e24251fae9fa74a3f2f9ea9cc3827eb18179c2563333cd3cfc0cae1e'; + const BString = + '586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; + const b = BigInt('0x' + bString); + const B = BigInt('0x' + BString); + + console.log('b:', b.toString(16)); + console.log('B:', B.toString(16)); + + // client keys + //const a = SRP.generateRandomBigInt(32); + const aString = + 'f1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; + const a = BigInt('0x' + aString); + console.log('a:', a.toString(16)); + + // simulate client calculating proof + const { A, M } = SRP.simulateDartClientProof(email, password, salt, a, B); + + // verify proof on server + SRP.verifyClientProof({ email, salt, verifier, A, b, B, Mc: M }); +} + +testSRP(); diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index 4038a6b..bbf8614 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -18,10 +18,10 @@ import { userWithIdSchema, } from '../../schemas/auth/user'; import { ObjectIdOrString } from '../../schemas/obj-id'; -import { bigIntModPow } from '../../util'; import { DatabaseService } from '../db/db'; import { MFAService } from './mfa'; import crypto, { createHash, Hash } from 'crypto'; +import { modPow } from './srp-utils'; export class AuthService { protected readonly db: DatabaseService; @@ -213,44 +213,31 @@ export class AuthService { } } -// TODO: implement the safeguards (checking for == 0, etc) - -/** A class to handle the SRP protocol's cryptographic operations */ -class SRP { - public static generateServerKeys(verifier: bigint): { b: bigint; B: bigint } { - const N = BigInt('0x' + SRP_N_HEX); - const g = BigInt(SRP_GENERATOR); - - // Calculate k = H(N | g) - const k = BigInt( - `0x${this.hash(N.toString(16) + g.toString(16)).digest('hex')}`, - ); - - const b = BigInt(`0x${crypto.randomBytes(32).toString('hex')}`); - - // Calculate B = k*v + g^b % N +export class SRP { + /** + * Generate server's private and public keys for SRP authentication + * @param verifier - The user's verifier value + * @returns The server's private key (b) and public key (B) + */ + static generateServerKeys(verifier: bigint): { b: bigint; B: bigint } { + // Generate random 32-byte private key + const b = this.generateRandomBigInt(32); - const kv = (k * verifier) % N; - const gb = bigIntModPow(g, b, N); - const B = (kv + gb) % N; + // Calculate B = (k*v + g^b) % N + const kv = (this.k * verifier) % this.N; + const gb = modPow(this.g, b, this.N); + const B = (kv + gb) % this.N; return { b, B }; } - // TODO: implement k /** - * Verify the client SRP proof - * @param email - The user's email - * @param salt - The user's salt - * @param verifier - The user's verifier - * @param A - The client's public key - * @param b - The server's private key - * @param B - The server's public key - * @param Mc - The client's proof - * @returns The server's proof for the client to verify - * @throws an InvalidPasswordError if the client proof is incorrect + * Verify the client's proof and generate server proof + * @param data - The SRP authentication data + * @returns The server's proof value + * @throws IncorrectPasswordError if the client's proof is incorrect */ - public static verifyClientProof(data: { + static verifyClientProof(data: { email: string; salt: string; verifier: bigint; @@ -258,193 +245,231 @@ class SRP { b: bigint; B: bigint; Mc: bigint; - }): string { - const N = BigInt(`0x${SRP_N_HEX}`); - const g = BigInt(SRP_GENERATOR); - - // Calculate k = H(N | g) - const k = BigInt( - `0x${this.hash(N.toString(16) + g.toString(16)).digest('hex')}`, - ); - console.log('k:', k.toString(16)); - - // calculate u = H(A | B) - const u = BigInt( - `0x${this.hash(data.A.toString(16) + data.B.toString(16)).digest('hex')}`, - ); - - console.log('Server-side values:'); - console.log('A:', data.A.toString(16)); - console.log('B:', data.B.toString(16)); - console.log('u:', u.toString(16)); - console.log('verifier:', data.verifier.toString(16)); - console.log('b:', data.b.toString(16)); + }): bigint { + const { email, salt, verifier, A, b, B, Mc } = data; - // Calculate S = (A * v^u)^b % N - const v_u = bigIntModPow(data.verifier, u, N); - console.log('v_u:', v_u.toString(16)); + // Security check: A should not be 0 mod N + if (A % this.N === BigInt(0)) { + console.log('A % N === 0, throwing'); - const A_vu = (data.A * v_u) % N; - console.log('A_vu:', A_vu.toString(16)); + throw new IncorrectPasswordError(); + } - const S = bigIntModPow(A_vu, data.b, N); - console.log('S:', S.toString(16)); + // Calculate u = H(A | B) + const u = this.calculateU(A, B); - // calculate session key K = H(S) - const K = this.hash(S).digest('hex'); + // Security check: u should not be 0 + if (u === BigInt(0)) { + console.log('u === 0, throwing'); - // calculate server proof Ms = H(H(N) xor H(g) | H(email) | salt | A | B | K) - const HN = createHash('sha256').update(N.toString(16)).digest(); - const Hg = createHash('sha256').update(g.toString(16)).digest(); - const He = this.hash(data.email).digest('hex'); + throw new IncorrectPasswordError(); + } - const xorHex = this.xorBuffers(HN, Hg).toString('hex'); - const AHex = data.A.toString(16); - const BHex = data.B.toString(16); + // Calculate S = (A * (verifier^u)) ^ b % N + const vu = modPow(verifier, u, this.N); + const Avu = (A * vu) % this.N; + const S = modPow(Avu, b, this.N); - // Ensure hex values have even length for consistent encoding - const AHexPadded = AHex.padStart((AHex.length + 1) & ~1, '0'); - const BHexPadded = BHex.padStart((BHex.length + 1) & ~1, '0'); + // Calculate K = H(S) + const K = this.hash(S.toString(16)); - const combined = `${xorHex}${He}${data.salt}${AHexPadded}${BHexPadded}${K}`; - console.log('Server combined string:', combined); + // Calculate expected client proof + const expectedMc = this.calculateClientProof(email, salt, A, B, K); - const expectedMc = this.hash(combined).digest('hex'); + console.log('expectedMc:', expectedMc.toString(16)); + console.log('Mc:', Mc.toString(16)); - const serverMcBigInt = BigInt(`0x${expectedMc}`); - if (serverMcBigInt !== data.Mc) { - console.log('server Mc:', expectedMc); - console.log('client Mc:', data.Mc.toString(16)); - console.log('server Mc (BigInt):', serverMcBigInt.toString(16)); + // Verify client proof + if (expectedMc !== Mc) { + console.log('expectedMc !== Mc, throwing'); throw new IncorrectPasswordError(); } - // generate server proof Ms = H(A | Mc | K) - const Ms = this.hash(data.A.toString(16) + data.Mc.toString(16) + K).digest( - 'hex', - ); + // Generate server proof + const Ms = this.calculateServerProof(A, Mc, K); return Ms; } - protected static hash(val: bigint | string): Hash { - if (typeof val === 'bigint') { - return createHash('sha256').update(val.toString(16)); - } else { - return createHash('sha256').update(val); + /** + * Simulate the Dart client proof calculation to compare results in Node. + */ + static simulateDartClientProof( + email: string, + password: string, + salt: string, + a: bigint, + B: bigint, + ): { A: bigint; K: bigint; M: bigint } { + // Log inputs for debugging + console.log('Simulating Dart client proof with:', { + email, + password, + salt, + a: a.toString(16), + B: B.toString(16), + }); + + // Step 1: A = g^a % N (with A != 0 mod N check) + const A = modPow(this.g, a, this.N); + if (A % this.N === BigInt(0)) { + throw new Error('Invalid A'); } - } + console.log('A:', A.toString(16)); - protected static xorBuffers(a: Buffer, b: Buffer): Buffer { - const result = Buffer.alloc(Math.max(a.length, b.length)); - for (let i = 0; i < result.length; i++) { - result[i] = a[i] ^ b[i]; + // Step 2: u = H(A | B) + const u = this.calculateU(A, B); + if (u === BigInt(0)) { + throw new Error('Invalid u'); } - return result; - } -} + console.log('u:', u.toString(16)); -// TEMP: class to simulate client side till srp implemented on the client side -// TODO: remove this -class ClientSRP { - public static generateSalt(): string { - return crypto.randomBytes(16).toString('hex'); - } + // Step 3: x = H(salt | H(email:password)) + const x = this.calculateX(email, password, salt); + console.log('x:', x.toString(16)); + + // Step 4: S = (B - k*g^x)^(a + u*x) % N + const gx = modPow(this.g, x, this.N); + console.log('gx:', gx.toString(16)); + + const kgx = (this.k * gx) % this.N; + console.log('kgx:', kgx.toString(16)); - public static generateVerifier(salt: string, password: string): string { - // Calculate x = H(salt | H(P)) + let base = (B - kgx) % this.N; + if (base < BigInt(0)) base += this.N; + console.log('base:', base.toString(16)); - // First, calculate H(P) - const innerHash = crypto.createHash('sha256'); - innerHash.update(password); - const innerHashResult = innerHash.digest(); + const exponent = (a + u * x) % (this.N - BigInt(1)); + console.log('exponent:', exponent.toString(16)); + + const S = modPow(base, exponent, this.N); + console.log('S:', S.toString(16)); - // Then calculate H(salt | H(P)) - const outerHash = crypto.createHash('sha256'); - outerHash.update(Buffer.from(salt, 'hex')); - outerHash.update(innerHashResult); - const x = BigInt('0x' + outerHash.digest('hex')); + // Step 5: K = H(S) + const K = this.hash(S.toString(16)); + console.log('K:', K.toString(16)); - // Calculate v = g^x mod N - const N = BigInt('0x' + SRP_N_HEX); - const g = BigInt(SRP_GENERATOR); - const v = g ** x % N; + // Step 6: M = H(H(N)^H(g) | H(email) | salt | A | B | K) + const M = this.calculateClientProof(email, salt, A, B, K); + console.log('M:', M.toString(16)); - // Return the verifier as a hex string - return v.toString(16); + return { A, K, M }; } - public static generateClientKeys(): { a: bigint; A: bigint } { - const N = BigInt('0x' + SRP_N_HEX); - const g = BigInt(SRP_GENERATOR); - const a = BigInt(crypto.randomBytes(32).toString('hex')); - const A = g ** a % N; - return { a, A }; + /** + * Calculate the hash parameter u = H(A | B) + */ + private static calculateU(A: bigint, B: bigint): bigint { + const concatenated = A.toString(16) + B.toString(16); + return BigInt('0x' + this.hashString(concatenated)); } - // TODO: implement k - public static calculateProof( + /** + * Calculate the client proof M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) + */ + private static calculateClientProof( email: string, - password: string, salt: string, - B: bigint, - a: bigint, A: bigint, - ) { - // calculate x = H(salt | H(password)) - const hashPassword = this.hash(password); - const x = BigInt(this.hash(salt + hashPassword)); - - // calculate u = H(A | B) - const u = BigInt(this.hash(A.toString(16) + B.toString(16))); - - // calculate shared secret S = (B - k * g^x) ^ (a + u * x) % N - const g = BigInt(SRP_GENERATOR); - const N = BigInt('0x' + SRP_N_HEX); - const S = (B - g ** x) ** (a + u * x) % N; - - // calculate session key K = H(S) - const K = this.hash(S); - - // calculate client proof Mc = H(H(N) xor H(g) | H(email) | salt | A | B | K) - const HN = createHash('sha256').update(N.toString(16)).digest(); - const Hg = createHash('sha256').update(g.toString(16)).digest(); - const He = this.hash(email); - - const Mc = this.hash( - this.xorBuffers(HN, Hg).toString('hex') + - He + - salt + - A.toString(16) + - B.toString(16) + - K, - ); + B: bigint, + K: bigint, + ): bigint { + // Hash N and g + const HN = this.hash(this.N.toString(16)); + const Hg = this.hash(this.g.toString(16)); + + // XOR operation (convert to Buffer for easier XOR) + const hnBuffer = Buffer.from(HN.toString(16).padStart(64, '0'), 'hex'); + const hgBuffer = Buffer.from(Hg.toString(16).padStart(64, '0'), 'hex'); + const xorBuffer = Buffer.alloc(hnBuffer.length); + + for (let i = 0; i < hnBuffer.length; i++) { + xorBuffer[i] = hnBuffer[i] ^ (i < hgBuffer.length ? hgBuffer[i] : 0); + } - return { - A, - Mc: BigInt(Mc), - }; + const Hemail = this.hashString(email); + + const concatString = + xorBuffer.toString('hex') + + Hemail + + salt + + A.toString(16) + + B.toString(16) + + K.toString(16); + + return BigInt('0x' + this.hashString(concatString)); } - protected static hash(val: bigint | string): string { - if (typeof val === 'bigint') { - return createHash('sha256').update(val.toString(16)).digest('hex'); - } else { - return createHash('sha256').update(val).digest('hex'); - } + /** + * Calculate the server proof M2 = H(A | M | K) + */ + private static calculateServerProof(A: bigint, M: bigint, K: bigint): bigint { + const concatenated = A.toString(16) + M.toString(16) + K.toString(16); + return BigInt('0x' + this.hashString(concatenated)); } - protected static xorBuffers(a: Buffer, b: Buffer): Buffer { - const result = Buffer.alloc(Math.max(a.length, b.length)); - for (let i = 0; i < result.length; i++) { - result[i] = a[i] ^ b[i]; + /** + * Generate a random BigInt of specified byte length + */ + public static generateRandomBigInt(byteLength: number): bigint { + const bytes = crypto.randomBytes(byteLength); + return BigInt('0x' + bytes.toString('hex')); + } + + /** + * Hash a string using SHA-256 + */ + private static hashString(input: string): string { + return crypto.createHash('sha256').update(input).digest('hex'); + } + + /** + * Hash a BigInt + */ + private static hash(input: string): bigint { + return BigInt('0x' + this.hashString(input)); + } + + /** + * Calculate the parameter x = H(salt | H(email | ':' | password)) + * This is used to derive the private key from the password + */ + //private static calculateX( + public static calculateX( + email: string, + password: string, + salt: string, + ): bigint { + if (!email || !password || !salt) { + throw new Error('Email, password, and salt must not be empty'); } - return result; + + // First hash: H(email | ':' | password) + const identity = this.hashString(`${email}:${password}`); + + // Convert salt from hex string to Buffer + const saltBuffer = Buffer.from(salt, 'hex'); + + // Concatenate salt bytes with identity hash bytes + const saltedIdentity = Buffer.concat([ + saltBuffer, + Buffer.from(identity, 'hex'), + ]); + + // Final hash: H(salt | H(email | ':' | password)) + const result = this.hashString(saltedIdentity.toString('hex')); + return BigInt('0x' + result); } -} -const SRP_N_HEX = - `AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73` - .trim() - .replace(/[\s\r\n]+/g, ''); -const SRP_GENERATOR = 2; + // Constants + private static readonly SRP_N_HEX = + `AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73` + .trim() + .replace(/[\s\r\n]+/g, ''); + private static readonly SRP_GENERATOR = 2; + private static readonly SRP_K = 3; + + public static readonly N = BigInt('0x' + this.SRP_N_HEX); + public static readonly g = BigInt(this.SRP_GENERATOR); + public static readonly k = BigInt(this.SRP_K); +} diff --git a/api/src/services/auth/srp-debug.ts b/api/src/services/auth/srp-debug.ts new file mode 100644 index 0000000..2068ff3 --- /dev/null +++ b/api/src/services/auth/srp-debug.ts @@ -0,0 +1,266 @@ +// /* eslint-disable @typescript-eslint/no-explicit-any */ +// /** +// * SRP Debug utilities for comparing client and server implementations +// * REMOVE THIS FILE IN PRODUCTION +// */ + +// import crypto from 'crypto'; +// import { modPow } from './srp-utils'; + +// export class SRPDebug { +// /** +// * Compare client and server SRP implementations +// */ +// static compareImplementations( +// email: string, +// password: string, +// salt: string, +// a: bigint, +// B: bigint, +// ): any { +// // Server implementation +// const serverImpl = this.serverImplementation(email, password, salt, a, B); + +// // Simulated client implementation +// const clientImpl = this.simulateClientImplementation( +// email, +// password, +// salt, +// a, +// B, +// ); + +// return { +// serverImplementation: { +// A: serverImpl.A.toString(16), +// u: serverImpl.u.toString(16), +// x: serverImpl.x.toString(16), +// S: serverImpl.S.toString(16), +// K: serverImpl.K.toString(16), +// M: serverImpl.M.toString(16), +// }, +// clientImplementation: { +// A: clientImpl.A.toString(16), +// u: clientImpl.u.toString(16), +// x: clientImpl.x.toString(16), +// S: clientImpl.S.toString(16), +// K: clientImpl.K.toString(16), +// M: clientImpl.M.toString(16), +// }, +// differences: { +// A: serverImpl.A === clientImpl.A ? 'Match' : 'Different', +// u: serverImpl.u === clientImpl.u ? 'Match' : 'Different', +// x: serverImpl.x === clientImpl.x ? 'Match' : 'Different', +// S: serverImpl.S === clientImpl.S ? 'Match' : 'Different', +// K: serverImpl.K === clientImpl.K ? 'Match' : 'Different', +// M: serverImpl.M === clientImpl.M ? 'Match' : 'Different', +// }, +// }; +// } + +// /** +// * Server implementation of SRP key generation +// */ +// private static serverImplementation( +// email: string, +// password: string, +// salt: string, +// a: bigint, +// B: bigint, +// ): { +// A: bigint; +// u: bigint; +// x: bigint; +// S: bigint; +// K: bigint; +// M: bigint; +// } { +// // A = g^a % N +// const A = modPow(this.g, a, this.N); + +// // u = H(A | B) +// const u = this.calculateU(A, B); + +// // x = H(salt | H(email:password)) +// const x = this.calculateX(email, password, salt); + +// // S = (B - k*g^x)^(a + u*x) % N +// const gx = modPow(this.g, x, this.N); +// const kgx = (this.k * gx) % this.N; +// let base = (B - kgx) % this.N; +// if (base < BigInt(0)) base += this.N; +// const exponent = (a + u * x) % (this.N - BigInt(1)); +// const S = modPow(base, exponent, this.N); + +// // K = H(S) +// const K = this.hash(S.toString(16)); + +// // M = H(H(N)^H(g) | H(email) | salt | A | B | K) +// const M = this.calculateClientProof(email, salt, A, B, K); + +// return { A, u, x, S, K, M }; +// } + +// /** +// * Simulated client implementation of SRP key generation +// */ +// private static simulateClientImplementation( +// email: string, +// password: string, +// salt: string, +// a: bigint, +// B: bigint, +// ): { +// A: bigint; +// u: bigint; +// x: bigint; +// S: bigint; +// K: bigint; +// M: bigint; +// } { +// // 1. Calculate A = g^a % N +// const A = modPow(this.g, a, this.N); + +// // 2. Calculate u = H(A | B) +// const u = this.calculateU(A, B); + +// // 3. Calculate x = H(salt | H(email:password)) +// // Modified to match the Dart implementation +// const identity = this.hashString(`${email}:${password}`); + +// // Concatenate hex salt with identity hash +// const saltBuffer = Buffer.from(salt, 'hex'); +// const identityBuffer = Buffer.from(identity, 'hex'); +// const saltedIdentity = Buffer.concat([saltBuffer, identityBuffer]); + +// const x = BigInt('0x' + this.hashString(saltedIdentity.toString('hex'))); + +// // 4. Calculate S = (B - k*g^x)^(a + u*x) % N +// const gx = modPow(this.g, x, this.N); +// const kgx = (this.k * gx) % this.N; +// let base = (B - kgx) % this.N; +// if (base < BigInt(0)) base += this.N; +// const exponent = (a + u * x) % (this.N - BigInt(1)); +// const S = modPow(base, exponent, this.N); + +// // 5. Calculate K = H(S) +// const K = BigInt('0x' + this.hashString(S.toString(16))); + +// // 6. Calculate M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) +// // This is where implementations might differ the most +// const HN = this.hash(this.N.toString(16)); +// const Hg = this.hash(this.g.toString(16)); + +// const hnBuffer = Buffer.from(HN.toString(16).padStart(64, '0'), 'hex'); +// const hgBuffer = Buffer.from(Hg.toString(16).padStart(64, '0'), 'hex'); +// const xorBuffer = Buffer.alloc(hnBuffer.length); + +// for (let i = 0; i < hnBuffer.length; i++) { +// xorBuffer[i] = hnBuffer[i] ^ (i < hgBuffer.length ? hgBuffer[i] : 0); +// } + +// const Hemail = this.hashString(email); + +// const concatString = +// xorBuffer.toString('hex') + +// Hemail + +// salt + +// A.toString(16) + +// B.toString(16) + +// K.toString(16); + +// const M = BigInt('0x' + this.hashString(concatString)); + +// return { A, u, x, S, K, M }; +// } + +// /** +// * Calculate the parameter x = H(salt | H(email | ':' | password)) +// */ +// private static calculateX( +// email: string, +// password: string, +// salt: string, +// ): bigint { +// // First hash: H(email | ':' | password) +// const identity = this.hashString(`${email}:${password}`); + +// // Concatenate salt with identity hash +// const saltBuffer = Buffer.from(salt, 'hex'); +// const identityBuffer = Buffer.from(identity, 'hex'); +// const saltedIdentity = Buffer.concat([saltBuffer, identityBuffer]); + +// // Final hash +// return BigInt('0x' + this.hashString(saltedIdentity.toString('hex'))); +// } + +// /** +// * Calculate u = H(A | B) +// */ +// private static calculateU(A: bigint, B: bigint): bigint { +// const concatenated = A.toString(16) + B.toString(16); +// return BigInt('0x' + this.hashString(concatenated)); +// } + +// /** +// * Calculate client proof +// */ +// private static calculateClientProof( +// email: string, +// salt: string, +// A: bigint, +// B: bigint, +// K: bigint, +// ): bigint { +// // Hash N and g +// const HN = this.hash(this.N.toString(16)); +// const Hg = this.hash(this.g.toString(16)); + +// // XOR operation +// const hnBuffer = Buffer.from(HN.toString(16).padStart(64, '0'), 'hex'); +// const hgBuffer = Buffer.from(Hg.toString(16).padStart(64, '0'), 'hex'); +// const xorBuffer = Buffer.alloc(hnBuffer.length); + +// for (let i = 0; i < hnBuffer.length; i++) { +// xorBuffer[i] = hnBuffer[i] ^ (i < hgBuffer.length ? hgBuffer[i] : 0); +// } + +// const Hemail = this.hashString(email); + +// const concatString = +// xorBuffer.toString('hex') + +// Hemail + +// salt + +// A.toString(16) + +// B.toString(16) + +// K.toString(16); + +// return BigInt('0x' + this.hashString(concatString)); +// } + +// /** +// * Hash a string using SHA-256 +// */ +// private static hashString(input: string): string { +// return crypto.createHash('sha256').update(input).digest('hex'); +// } + +// /** +// * Hash a value to BigInt +// */ +// private static hash(input: string): bigint { +// return BigInt('0x' + this.hashString(input)); +// } + +// // Constants +// private static readonly SRP_N_HEX = +// `AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73` +// .trim() +// .replace(/[\s\r\n]+/g, ''); +// private static readonly SRP_GENERATOR = 2; +// private static readonly SRP_K = 3; + +// private static readonly N = BigInt('0x' + this.SRP_N_HEX); +// private static readonly g = BigInt(this.SRP_GENERATOR); +// private static readonly k = BigInt(this.SRP_K); +// } diff --git a/api/src/services/auth/srp-utils.ts b/api/src/services/auth/srp-utils.ts new file mode 100644 index 0000000..17cd039 --- /dev/null +++ b/api/src/services/auth/srp-utils.ts @@ -0,0 +1,80 @@ +/** + * Helper utilities for SRP protocol implementation + */ + +import crypto from 'crypto'; + +/** + * Extension for BigInt to add modPow operation + * Calculates (base^exponent) % modulus efficiently + */ +export function modPow( + base: bigint, + exponent: bigint, + modulus: bigint, +): bigint { + if (modulus === BigInt(1)) return BigInt(0); + + let result = BigInt(1); + base = base % modulus; + + while (exponent > BigInt(0)) { + if (exponent % BigInt(2) === BigInt(1)) { + result = (result * base) % modulus; + } + exponent = exponent >> BigInt(1); + base = (base * base) % modulus; + } + + return result; +} + +/** + * Generate cryptographically secure random bytes as BigInt + */ +export function generateSecureRandomBigInt(byteLength: number): bigint { + const bytes = crypto.randomBytes(byteLength); + return BigInt('0x' + bytes.toString('hex')); +} + +/** + * Hash a string using SHA-256 + */ +export function hashString(input: string): string { + return crypto.createHash('sha256').update(input).digest('hex'); +} + +/** + * Convert a BigInt to a byte array + */ +export function bigIntToBytes(value: bigint): Buffer { + let hex = value.toString(16); + // Ensure even length for hex string + if (hex.length % 2 !== 0) { + hex = '0' + hex; + } + return Buffer.from(hex, 'hex'); +} + +/** + * Convert a byte array to a BigInt + */ +export function bytesToBigInt(bytes: Buffer): bigint { + return BigInt('0x' + bytes.toString('hex')); +} + +/** + * Perform security validation for SRP parameters + */ +export function validateSrpParameters( + A: bigint, + B: bigint, + N: bigint, +): boolean { + // Check that A and B are not zero modulo N + if (A % N === BigInt(0) || B % N === BigInt(0)) { + return false; + } + + return true; +} diff --git a/app/lib/debug/srp_debugger.dart b/app/lib/debug/srp_debugger.dart new file mode 100644 index 0000000..935102f --- /dev/null +++ b/app/lib/debug/srp_debugger.dart @@ -0,0 +1,63 @@ +// import 'dart:convert'; +// import 'package:convert/convert.dart'; +// import 'package:crypto/crypto.dart'; +// import '../services/auth.dart'; + +// class SRPDebugger { +// /// Generate detailed debug information about SRP calculations +// static Map debugSRPCalculation( +// String email, String password, String salt, BigInt a, BigInt B) { +// final result = {}; + +// try { +// // Step 1: Calculate A = g^a % N +// final A = SRP.g.modPow(a, SRP.N); +// result['A'] = "0x${A.toRadixString(16)}"; + +// // Step 2: Calculate u = H(A | B) +// final u = SRP.calculateU(A, B); +// result['u'] = "0x${u.toRadixString(16)}"; + +// // Step 3: Calculate x = H(salt | H(email:password)) +// final x = SRP.calculateX(email, password, salt); +// result['x'] = "0x${x.toRadixString(16)}"; + +// // Step 4: Calculate S = (B - k*g^x)^(a + u*x) % N +// final gx = SRP.g.modPow(x, SRP.N); +// result['gx'] = "0x${gx.toRadixString(16)}"; + +// final kgx = (SRP.k * gx) % SRP.N; +// result['kgx'] = "0x${kgx.toRadixString(16)}"; + +// BigInt base = (B - kgx) % SRP.N; +// if (base < BigInt.zero) base += SRP.N; +// result['base'] = "0x${base.toRadixString(16)}"; + +// final exponent = (a + (u * x)) % (SRP.N - BigInt.one); +// result['exponent'] = "0x${exponent.toRadixString(16)}"; + +// final S = base.modPow(exponent, SRP.N); +// result['S'] = "0x${S.toRadixString(16)}"; + +// // Step 5: Calculate K = H(S) +// final K = SRP.hashBigInt(S); +// result['K'] = "0x${K.toRadixString(16)}"; + +// // Step 6: Calculate M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) +// final M = SRP.calculateClientProof(email, salt, A, B, K); +// result['M'] = "0x${M.toRadixString(16)}"; + +// // Add detailed hash breakdowns to debug possible issues +// result['hash_email_password'] = SRP.hashString("$email:$password"); +// result['hex_salt'] = salt; + +// // Compare with raw SHA-256 calculation +// final rawSha = sha256.convert(utf8.encode("$email:$password")).toString(); +// result['raw_sha256_email_password'] = rawSha; +// } catch (e) { +// result['error'] = e.toString(); +// } + +// return result; +// } +// } diff --git a/app/lib/main.dart b/app/lib/main.dart index 1ae8838..247d06b 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; -import 'package:smartify/services/auth.dart'; import 'models/mfa.dart'; import 'models/user.dart'; @@ -21,30 +20,27 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { - const password = 'password'; - //final salt = SRP.generateSalt(); - const salt = 'e6eb7979923ebb117785a56ab84f94ff'; - //debugPrint('salt: $salt\n'); - //final verifier = SRP.generateVerifier(salt, password); - //debugPrint('verifier: $verifier\n'); - final keys = SRP.generateKeys(); - debugPrint('keys: a: ${keys.a}, A: ${keys.A}\n'); - //final B = SRP.generateKeys().A; - final B = BigInt.parse( - "0x45d1c104c0f75bb2366a8bc2088a66853c7b1d5646b20595ef412e26269181d78e488ac619b8129cac9ec99bb992f6acb1bc4b2d97879067b48977482f405f7e6101e6b1da7d86adb62a43eb38a07a07b4ea139060f3f61605bc023316a89c1b56b1977f0ef996cedf2612244d5303e6b4b068ee2013635a70af4eae7b5e1f8aaf3301d6d2fb4b235cda3133ae6ddaececcde90fdc1e19e1f289167fcbc9a926bcd08f3dab1505754d58305c62089cec6199f998d3a1ec06800293fb2c5c5b954844ba903aa77a7ae33b272c1c68e54fa25d8830fe02d0b0de74210435a4bab833b1db0ed7aa798ef38181adee3aca5c53aec0d73642dc0763075a5e74e40491"); - debugPrint('B: $B\n'); - final proof = SRP.calculateProof( - email: 'hady@gmail.com', - password: password, - a: keys.a, - A: keys.A, - B: B, - salt: salt, - ); - debugPrint('proof: $proof\n'); - debugPrint(''); - debugPrint( - 'hex\n\nA: 0x${keys.A.toRadixString(16)}\nproof (Mc): 0x${proof.toRadixString(16)}'); + //const email = 'hady@gmail.com'; + //const password = 'password'; + ////final salt = SRP.generateSalt(); + //const salt = 'e6eb7979923ebb117785a56ab84f94ff'; + //////debugPrint('salt: $salt\n'); + //////final verifier = SRP.generateVerifier(salt, password); + //////debugPrint('verifier: $verifier\n'); + ////final a = SRP.generatePrivateKey(); + ////final A = SRP.calculateA(a); + ////final B = BigInt.parse( + //// "0x45d1c104c0f75bb2366a8bc2088a66853c7b1d5646b20595ef412e26269181d78e488ac619b8129cac9ec99bb992f6acb1bc4b2d97879067b48977482f405f7e6101e6b1da7d86adb62a43eb38a07a07b4ea139060f3f61605bc023316a89c1b56b1977f0ef996cedf2612244d5303e6b4b068ee2013635a70af4eae7b5e1f8aaf3301d6d2fb4b235cda3133ae6ddaececcde90fdc1e19e1f289167fcbc9a926bcd08f3dab1505754d58305c62089cec6199f998d3a1ec06800293fb2c5c5b954844ba903aa77a7ae33b272c1c68e54fa25d8830fe02d0b0de74210435a4bab833b1db0ed7aa798ef38181adee3aca5c53aec0d73642dc0763075a5e74e40491"); + //// + ////final K = SRP.calculateSessionKey(email, password, salt, a, B); + //// + ////final proof = SRP.calculateClientProof(email, salt, A, B, K); + //// + ////debugPrint('\n'); + ////debugPrint('A: 0x${A.toRadixString(16)}\n'); + ////debugPrint('B: 0x${B.toRadixString(16)}\n'); + ////debugPrint('K: 0x${K.toRadixString(16)}\n'); + ////debugPrint('proof: 0x${proof.toRadixString(16)}\n'); return MaterialApp( title: 'Flutter Demo', diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index e13a6b8..735718b 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -1,164 +1,416 @@ -// ignore_for_file: unused_local_variable, unused_element, unused_field, non_constant_identifier_names, unused_element_parameter +// ignore_for_file: non_constant_identifier_names, unused_element import 'dart:convert'; // for the utf8.encode method import 'dart:math'; -import 'package:crypto/crypto.dart' as crypto; +import 'package:crypto/crypto.dart'; import 'package:convert/convert.dart'; class AuthService {} -// TODO: implement the safeguards (checking for == 0, etc) +/// Client SRP methods +//class SRP { +// static String SRP_N_HEX = (""" +// AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73""") +// .trim() +// .replaceAll(RegExp(r'[\s\r\n]+'), ''); +// static int SRP_GENERATOR = 2; +// static int SRP_K = 3; +// +// // Prime number used as modulus +// static BigInt get N => BigInt.parse(SRP_N_HEX, radix: 16); +// // Generator +// static BigInt get g => BigInt.from(SRP_GENERATOR); +// // Multiplier parameter +// static BigInt get k => BigInt.from(SRP_K); +// +// /// Generate a random salt +// static String generateSalt({int length = 16}) { +// final random = Random.secure(); +// final saltBytes = List.generate(length, (_) => random.nextInt(256)); +// return hex.encode(saltBytes); +// } +// +// /// Generate a private key for the client (a) +// static BigInt generatePrivateKey() { +// final random = Random.secure(); +// final bytes = List.generate(32, (_) => random.nextInt(256)); +// return BigInt.parse(hex.encode(bytes), radix: 16); +// } +// +// /// Generate the verifier for registration +// static BigInt generateVerifier(String email, String password, String salt) { +// // Calculate x = H(salt | H(email | ':' | password)) +// final x = calculateX(email, password, salt); +// // Calculate v = g^x % N +// return g.modPow(x, N); +// } +// +// /// Calculate the client's public key (A) +// static BigInt calculateA(BigInt a) { +// // A = g^a % N +// final A = g.modPow(a, N); +// +// // Security check: A must not be zero modulo N +// if (A % N == BigInt.zero) { +// throw Exception("Invalid client public key: A mod N equals 0"); +// } +// +// return A; +// } +// +// /// Calculate the shared session key (K) +// static BigInt calculateSessionKey( +// String email, String password, String salt, BigInt a, BigInt B) { +// // Verify B != 0 mod N +// if (B % N == BigInt.zero) { +// throw Exception("Invalid server public key: B mod N equals 0"); +// } +// +// // Calculate A = g^a % N +// final A = calculateA(a); +// +// // Calculate u = H(A | B) +// final u = calculateU(A, B); +// +// // Verify u != 0 +// if (u == BigInt.zero) { +// throw Exception("Invalid hash parameter: u equals 0"); +// } +// +// // Calculate x = H(salt | H(email | ':' | password)) +// final x = calculateX(email, password, salt); +// +// // Calculate S = (B - k * g^x)^(a + u * x) % N +// final kgx = (k * g.modPow(x, N)) % N; +// BigInt base = (B - kgx) % N; +// if (base < BigInt.zero) base += N; // Ensure positive +// +// final exponent = (a + (u * x)) % (N - BigInt.one); +// final S = base.modPow(exponent, N); +// +// // Calculate K = H(S) +// return hashBigInt(S); +// } +// +// /// Calculate the client proof M +// static BigInt calculateClientProof( +// String email, String salt, BigInt A, BigInt B, BigInt K) { +// // Verify inputs are not zero +// if (A == BigInt.zero || B == BigInt.zero || K == BigInt.zero) { +// throw Exception("Invalid input parameters: A, B, or K equals 0"); +// } +// +// // M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) +// final HN = hashBigInt(N); +// final Hg = hashBigInt(g); +// final Hemail = hashString(email); +// +// // XOR operation on bytes +// final hnBytes = bigIntToBytes(HN); +// final hgBytes = bigIntToBytes(Hg); +// final xorResult = List.generate( +// hnBytes.length, +// (i) => i < hgBytes.length ? hnBytes[i] ^ hgBytes[i] : hnBytes[i], +// ); +// +// // Concatenate all parts +// final concatParts = [ +// xorResult, +// utf8.encode(Hemail), +// hex.decode(salt), +// bigIntToBytes(A), +// bigIntToBytes(B), +// bigIntToBytes(K), +// ].expand((x) => x).toList(); +// +// // Hash the combined value +// return hashBytes(concatParts); +// } +// +// /// Verify the server proof +// static bool verifyServerProof( +// BigInt A, BigInt M, BigInt K, BigInt serverProof) { +// // Verify inputs are not zero +// if (A == BigInt.zero || M == BigInt.zero || K == BigInt.zero) { +// throw Exception("Invalid input parameters: A, M, or K equals 0"); +// } +// +// // Expected server proof: H(A | M | K) +// final expectedProof = hashBytes([ +// ...bigIntToBytes(A), +// ...bigIntToBytes(M), +// ...bigIntToBytes(K), +// ]); +// +// return expectedProof == serverProof; +// } +// +// /// Calculate the parameter x +// static BigInt calculateX(String email, String password, String salt) { +// if (email.isEmpty || password.isEmpty || salt.isEmpty) { +// throw Exception("Email, password, and salt must not be empty"); +// } +// +// final identity = hashString("$email:$password"); +// final saltedIdentity = hex.decode(salt) + utf8.encode(identity); +// return hashBytes(saltedIdentity); +// } +// +// /// Calculate the hash parameter u +// static BigInt calculateU(BigInt A, BigInt B) { +// // Verify inputs are valid +// if (A == BigInt.zero || B == BigInt.zero) { +// throw Exception("Invalid public keys: A or B equals 0"); +// } +// +// final bytes = [...bigIntToBytes(A), ...bigIntToBytes(B)]; +// return hashBytes(bytes); +// } +// +// /// Hash a string +// static String hashString(String input) { +// final bytes = utf8.encode(input); +// final digest = sha256.convert(bytes); +// return digest.toString(); +// } +// +// /// Hash bytes to a BigInt +// static BigInt hashBytes(List bytes) { +// final digest = sha256.convert(bytes); +// return BigInt.parse(digest.toString(), radix: 16); +// } +// +// /// Hash a BigInt to another BigInt +// static BigInt hashBigInt(BigInt value) { +// return hashBytes(bigIntToBytes(value)); +// } +// +// /// Convert a BigInt to bytes +// static List bigIntToBytes(BigInt value) { +// final hex = +// value.toRadixString(16).padLeft((value.bitLength + 7) ~/ 8 * 2, '0'); +// return (hex.length % 2 == 0) ? _hexToBytes(hex) : _hexToBytes('0$hex'); +// } +// +// /// Convert hex string to bytes +// static List _hexToBytes(String hex) { +// final result = []; +// for (var i = 0; i < hex.length; i += 2) { +// result.add(int.parse(hex.substring(i, i + 2), radix: 16)); +// } +// return result; +// } +// +// /// Simulate the Node server proof calculation +// static BigInt simulateNodeServerProof({ +// required BigInt A, +// required BigInt b, +// required BigInt verifier, +// required BigInt B, +// required String email, +// required String salt, +// required BigInt clientProof, +// }) { +// // 1) Check A != 0 mod N +// if (A % N == BigInt.zero) { +// throw Exception("Invalid A"); +// } +// +// // 2) Calculate u = H(A|B) +// final u = calculateU(A, B); +// if (u == BigInt.zero) { +// throw Exception("Invalid u"); +// } +// +// // 3) S = (A * (v^u))^b % N +// final vu = modPow(verifier, u, N); +// final Avu = (A * vu) % N; +// final S = modPow(Avu, b, N); +// +// // 4) K = H(S) +// final K = _hashHex(S.toRadixString(16)); +// +// // 5) expected M = H(H(N)^H(g) | H(email) | salt | A | B | K) +// final expectedM = _calculateClientProofNode(email, salt, A, B, K); +// if (expectedM != clientProof) { +// throw Exception("Client proof mismatch"); +// } +// +// // 6) server proof = H(A| M| K) +// return _calculateServerProofNode(A, clientProof, K); +// } +// +// // Minimal Node-like helpers in Dart: +// +// static BigInt modPow(BigInt base, BigInt exponent, BigInt modulus) { +// BigInt result = BigInt.one; +// BigInt curBase = base % modulus; +// BigInt e = exponent; +// +// while (e > BigInt.zero) { +// if (e & BigInt.one == BigInt.one) { +// result = (result * curBase) % modulus; +// } +// e >>= 1; +// curBase = (curBase * curBase) % modulus; +// } +// return result; +// } +// +// static BigInt _hashHex(String hexStr) { +// final digest = sha256.convert(utf8.encode(hexStr)); +// return BigInt.parse(digest.toString(), radix: 16); +// } +//} -/// Client SRP methdos class SRP { static String SRP_N_HEX = (""" AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73""") .trim() .replaceAll(RegExp(r'[\s\r\n]+'), ''); static int SRP_GENERATOR = 2; + static int SRP_K = 3; - static List _randomBytes(int length) { - var random = Random.secure(); - var values = List.generate(length, (i) => random.nextInt(256)); - return values; - } + // Prime number used as modulus + static BigInt get N => BigInt.parse(SRP_N_HEX, radix: 16); + // Generator + static BigInt get g => BigInt.from(SRP_GENERATOR); + // Multiplier parameter + static BigInt get k => BigInt.from(SRP_K); - /// hash a String and return it's digest - static crypto.Digest _hashString(String s) { - return crypto.sha256.convert(utf8.encode(s)); - } + // helpers - /// has a BigInt and return it's digest - static crypto.Digest _hashBigInt(BigInt b) { - return crypto.sha256.convert(utf8.encode(b.toRadixString(16))); + static String hashString(String input) { + final bytes = utf8.encode(input); + final digest = sha256.convert(bytes); + return digest.toString(); } - /// Generate a random salt - static String generateSalt() => hex.encode(_randomBytes(16)); - - /// Generate a random verifier - static String generateVerifier(String salt, String password) { - // Calculate x = H(salt | H(P)) + /// Hashes the input and returns it as a BigInt + static BigInt hashToBigInt(String input) { + return BigInt.parse(hashString(input), radix: 16); + } - // H(P) - final innerHash = crypto.sha256.convert(utf8.encode(password)); - final outerHash = - crypto.sha256.convert([...hex.decode(salt), ...innerHash.bytes]); + static generateSalt([int length = 16]) { + final random = Random.secure(); + final saltBytes = List.generate(length, (_) => random.nextInt(256)); + return hex.encode(saltBytes); + } - final x = BigInt.parse('0x${outerHash.toString()}'); + static BigInt _randomBigInt(int length) { + final random = Random.secure(); + final bytes = List.generate(length, (_) => random.nextInt(256)); + return BigInt.parse(hex.encode(bytes), radix: 16); + } - // calculate v = g^x mod N - final N = BigInt.parse('0x$SRP_N_HEX'); - final g = BigInt.from(SRP_GENERATOR); - final v = g.modPow(x, N); + static BigInt generatePrivateKey() { + return _randomBigInt(32); + } - return v.toRadixString(16); + static BigInt deriveVerifier(String email, String password, String salt) { + final x = calculateX(email, password, salt); + return g.modPow(x, N); } - /// Generate the SRP Client keys - static ({BigInt a, BigInt A}) generateKeys() { - final N = BigInt.parse('0x$SRP_N_HEX'); - final g = BigInt.from(SRP_GENERATOR); - final a = BigInt.parse(hex.encode(_randomBytes(32)), radix: 16); + static BigInt derivePublicKey(BigInt a) { final A = g.modPow(a, N); - return (a: a, A: A); + if (A % N == BigInt.zero) { + throw Exception("Invalid client public key: A mod N equals 0"); + } + return A; + } + + static BigInt calcluateU(BigInt A, BigInt B) { + final concatenated = A.toRadixString(16) + B.toRadixString(16); + return BigInt.parse(hashString(concatenated), radix: 16); } - static BigInt calculateProof({ - required String email, - required String password, - required String salt, - required BigInt B, - required BigInt a, - required BigInt A, - }) { - final N = BigInt.parse('0x$SRP_N_HEX'); - final g = BigInt.from(SRP_GENERATOR); - - // Calculate k = H(N | g) - keep this part - final k = BigInt.parse( - '0x${_hashString(N.toRadixString(16) + g.toRadixString(16)).toString()}'); - print('k: ${k.toRadixString(16)}'); - - // Calculate x = H(salt | H(password)) - keep this part - final hashPassword = _hashString(password).toString(); - final x = BigInt.parse('0x${_hashString('$salt$hashPassword').toString()}'); - - // Calculate u = H(A | B) - keep this part - final u = BigInt.parse( - '0x${_hashString(A.toRadixString(16) + B.toRadixString(16)).toString()}'); - - print('Client-side values:'); - print('A: ${A.toRadixString(16)}'); - print('B: ${B.toRadixString(16)}'); - print('u: ${u.toRadixString(16)}'); - print('x: ${x.toRadixString(16)}'); - print('a: ${a.toRadixString(16)}'); - - // Calculate v = g^x mod N - final v = g.modPow(x, N); - - // MODIFY THIS SECTION: Match the server S calculation exactly - // Calculate S = (B - k * g^x)^(a + u*x) % N - final g_x = g.modPow(x, N); - final k_g_x = (k * g_x) % N; - - // Ensure positive modulo if B < k*g^x - final B_minus_kgx = ((B - k_g_x) % N + N) % N; - - // Calculate a + u*x - final a_plus_ux = (a + u * x) % (N - BigInt.one); - - // Finally calculate S - final S = B_minus_kgx.modPow(a_plus_ux, N); - print('S: ${S.toRadixString(16)}'); - - // Calculate shared session key K = H(S) - final K = _hashBigInt(S).toString(); - - // calculate client proof Mc = H(H(N) xor H(g) | H(email) | salt | A | B | K) - final HN = _hashBigInt(N).bytes; - final Hg = _hashBigInt(g).bytes; - final He = _hashString(email).toString(); - - // Ensure consistent hex encoding between client and server - final xorResult = _xorLists(HN, Hg); - final xorHex = hex.encode(xorResult); - final AHex = A.toRadixString(16); - final BHex = B.toRadixString(16); - - // Ensure hex values have even length for consistent encoding - final AHexPadded = AHex.padLeft((AHex.length + 1) & ~1, '0'); - final BHexPadded = BHex.padLeft((BHex.length + 1) & ~1, '0'); - - final combined = '$xorHex$He$salt$AHexPadded$BHexPadded$K'; - print('Client combined string: $combined'); - - // Convert to BigInt first, then to hex string to match server format - final Mc = _hashString(combined); - final McHex = Mc.toString(); - return BigInt.parse('0x$McHex'); + static BigInt calculateX(String email, String password, String salt) { + if (email.isEmpty || password.isEmpty || salt.isEmpty) { + throw Exception("Email, password, and salt must not be empty"); + } + + // First H(email | ':' | password) + final identity = hashString('$email:$password'); + + // convert salt from hex to buffer + final saltBuffer = hex.decode(salt); + + // convert identity to buffer + final identityBuffer = hex.decode(identity); + + // concatenate salt with identity hash bytes + final saltedIdentity = [...saltBuffer, ...identityBuffer]; + + // final hash H(salt | H(email | ':' | password)) + final result = hashString(hex.encode(saltedIdentity)); + return BigInt.parse(result, radix: 16); } - /// Verify the server proof [Ms] by calculating it ourselves using the client - /// public key [A], the client proof [Mc] and the shared session key [K]. - static bool verifyServerProof({ - required BigInt A, - required BigInt Mc, - required String K, - required String Ms, - }) { - final expectedMs = - _hashString(A.toRadixString(16) + Mc.toRadixString(16) + K).toString(); - - return Ms == expectedMs; + static BigInt calculateClientProof( + String email, String salt, BigInt A, BigInt B, BigInt K) { + // Hash N and g + final HN = hashToBigInt(N.toRadixString(16)); + final Hg = hashToBigInt(g.toRadixString(16)); + + // XOR operation (convert to buffer for easier XOR) + final hnBuffer = hex.decode(HN.toRadixString(16).padLeft(64, '0')); + final hgBuffer = hex.decode(Hg.toRadixString(16).padLeft(64, '0')); + + final xorBuffer = List.generate( + hnBuffer.length, + (i) => hnBuffer[i] ^ (i < hgBuffer.length ? hgBuffer[i] : 0), + ); + + // hash email + final Hemail = hashString(email); + + // concat + final concatString = hex.encode(xorBuffer) + + Hemail + + salt + + A.toRadixString(16) + + B.toRadixString(16) + + K.toRadixString(16); + + return hashToBigInt(concatString); } - /// xor two lists of integers - /// - /// If the lists have different lengths, the result will have the length of - /// the shortest list - static _xorLists(List a, List b) { - return List.generate(min(a.length, b.length), (i) => a[i] ^ b[i]); + respondToAuthChallenge( + String email, String password, String salt, BigInt a, BigInt B) { + // Step 1: derive public key + final A = derivePublicKey(a); + + // Step 2: calculate u = H(A | B) + final u = calcluateU(A, B); + + // Step 3: calculate x = H(salt | H(email | ':' | password)) + final x = calculateX(email, password, salt); + + // Step 4: calculate S = (B - k * g^x)^(a + u * x) % N + final gx = g.modPow(x, N); + final kgx = (k * gx) % N; + + var base = (B - kgx) % N; + if (base < BigInt.zero) base += N; + + final exponent = (a + (u * x)) % (N - BigInt.one); + + final S = base.modPow(exponent, N); + + // Step 5: calculate K = H(S) + final K = hashToBigInt(S.toRadixString(16)); + + // Step 6: calculate client proof M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) + final M = calculateClientProof(email, salt, A, B, K); + + // TEMP + // TODO: update with proper typing + + return { + 'A': A, + 'M': M, + 'K': K, + }; } } diff --git a/app/lib/utils/srp_debug_utils.dart b/app/lib/utils/srp_debug_utils.dart new file mode 100644 index 0000000..e69de29 From f277d10e94eceb392cc2729f1674952d02421dec Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Thu, 27 Feb 2025 12:00:51 +0400 Subject: [PATCH 12/25] WIP working client proof calculation in app --- app/lib/main.dart | 44 ++++++++++++++++-------------- app/lib/services/auth.dart | 2 +- app/lib/utils/srp_debug_utils.dart | 1 + 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/app/lib/main.dart b/app/lib/main.dart index 247d06b..e13f377 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,7 +1,10 @@ +// ignore_for_file: unused_local_variable, prefer_const_declarations, avoid_print + import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:smartify/services/auth.dart'; import 'models/mfa.dart'; import 'models/user.dart'; @@ -20,27 +23,28 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { - //const email = 'hady@gmail.com'; - //const password = 'password'; + const email = 'hady@gmail.com'; + const password = 'password'; ////final salt = SRP.generateSalt(); - //const salt = 'e6eb7979923ebb117785a56ab84f94ff'; - //////debugPrint('salt: $salt\n'); - //////final verifier = SRP.generateVerifier(salt, password); - //////debugPrint('verifier: $verifier\n'); - ////final a = SRP.generatePrivateKey(); - ////final A = SRP.calculateA(a); - ////final B = BigInt.parse( - //// "0x45d1c104c0f75bb2366a8bc2088a66853c7b1d5646b20595ef412e26269181d78e488ac619b8129cac9ec99bb992f6acb1bc4b2d97879067b48977482f405f7e6101e6b1da7d86adb62a43eb38a07a07b4ea139060f3f61605bc023316a89c1b56b1977f0ef996cedf2612244d5303e6b4b068ee2013635a70af4eae7b5e1f8aaf3301d6d2fb4b235cda3133ae6ddaececcde90fdc1e19e1f289167fcbc9a926bcd08f3dab1505754d58305c62089cec6199f998d3a1ec06800293fb2c5c5b954844ba903aa77a7ae33b272c1c68e54fa25d8830fe02d0b0de74210435a4bab833b1db0ed7aa798ef38181adee3aca5c53aec0d73642dc0763075a5e74e40491"); - //// - ////final K = SRP.calculateSessionKey(email, password, salt, a, B); - //// - ////final proof = SRP.calculateClientProof(email, salt, A, B, K); - //// - ////debugPrint('\n'); - ////debugPrint('A: 0x${A.toRadixString(16)}\n'); - ////debugPrint('B: 0x${B.toRadixString(16)}\n'); - ////debugPrint('K: 0x${K.toRadixString(16)}\n'); - ////debugPrint('proof: 0x${proof.toRadixString(16)}\n'); + const salt = 'e6eb7979923ebb117785a56ab84f94ff'; + final verifier = SRP.deriveVerifier(email, password, salt); + + const BString = + '0x586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; + final B = BigInt.parse(BString); + + const aString = + '0xf1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; + final a = BigInt.parse(aString); + + final result = SRP.respondToAuthChallenge(email, password, salt, a, B); + + final A = result['A']!; + final M = result['M']!; + //final K = result['K']!; + + print('A: ${A.toRadixString(16)}'); + print('M: ${M.toRadixString(16)}'); return MaterialApp( title: 'Flutter Demo', diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index 735718b..b3ed0b2 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -376,7 +376,7 @@ class SRP { return hashToBigInt(concatString); } - respondToAuthChallenge( + static Map respondToAuthChallenge( String email, String password, String salt, BigInt a, BigInt B) { // Step 1: derive public key final A = derivePublicKey(a); diff --git a/app/lib/utils/srp_debug_utils.dart b/app/lib/utils/srp_debug_utils.dart index e69de29..8b13789 100644 --- a/app/lib/utils/srp_debug_utils.dart +++ b/app/lib/utils/srp_debug_utils.dart @@ -0,0 +1 @@ + From 4ce5a123c0abd21e917cd7e440837fb77ae7c6f1 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Thu, 27 Feb 2025 12:08:11 +0400 Subject: [PATCH 13/25] deleted old srp class --- app/lib/services/auth.dart | 255 ------------------------------------- 1 file changed, 255 deletions(-) diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index b3ed0b2..929c938 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -8,261 +8,6 @@ import 'package:convert/convert.dart'; class AuthService {} /// Client SRP methods -//class SRP { -// static String SRP_N_HEX = (""" -// AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73""") -// .trim() -// .replaceAll(RegExp(r'[\s\r\n]+'), ''); -// static int SRP_GENERATOR = 2; -// static int SRP_K = 3; -// -// // Prime number used as modulus -// static BigInt get N => BigInt.parse(SRP_N_HEX, radix: 16); -// // Generator -// static BigInt get g => BigInt.from(SRP_GENERATOR); -// // Multiplier parameter -// static BigInt get k => BigInt.from(SRP_K); -// -// /// Generate a random salt -// static String generateSalt({int length = 16}) { -// final random = Random.secure(); -// final saltBytes = List.generate(length, (_) => random.nextInt(256)); -// return hex.encode(saltBytes); -// } -// -// /// Generate a private key for the client (a) -// static BigInt generatePrivateKey() { -// final random = Random.secure(); -// final bytes = List.generate(32, (_) => random.nextInt(256)); -// return BigInt.parse(hex.encode(bytes), radix: 16); -// } -// -// /// Generate the verifier for registration -// static BigInt generateVerifier(String email, String password, String salt) { -// // Calculate x = H(salt | H(email | ':' | password)) -// final x = calculateX(email, password, salt); -// // Calculate v = g^x % N -// return g.modPow(x, N); -// } -// -// /// Calculate the client's public key (A) -// static BigInt calculateA(BigInt a) { -// // A = g^a % N -// final A = g.modPow(a, N); -// -// // Security check: A must not be zero modulo N -// if (A % N == BigInt.zero) { -// throw Exception("Invalid client public key: A mod N equals 0"); -// } -// -// return A; -// } -// -// /// Calculate the shared session key (K) -// static BigInt calculateSessionKey( -// String email, String password, String salt, BigInt a, BigInt B) { -// // Verify B != 0 mod N -// if (B % N == BigInt.zero) { -// throw Exception("Invalid server public key: B mod N equals 0"); -// } -// -// // Calculate A = g^a % N -// final A = calculateA(a); -// -// // Calculate u = H(A | B) -// final u = calculateU(A, B); -// -// // Verify u != 0 -// if (u == BigInt.zero) { -// throw Exception("Invalid hash parameter: u equals 0"); -// } -// -// // Calculate x = H(salt | H(email | ':' | password)) -// final x = calculateX(email, password, salt); -// -// // Calculate S = (B - k * g^x)^(a + u * x) % N -// final kgx = (k * g.modPow(x, N)) % N; -// BigInt base = (B - kgx) % N; -// if (base < BigInt.zero) base += N; // Ensure positive -// -// final exponent = (a + (u * x)) % (N - BigInt.one); -// final S = base.modPow(exponent, N); -// -// // Calculate K = H(S) -// return hashBigInt(S); -// } -// -// /// Calculate the client proof M -// static BigInt calculateClientProof( -// String email, String salt, BigInt A, BigInt B, BigInt K) { -// // Verify inputs are not zero -// if (A == BigInt.zero || B == BigInt.zero || K == BigInt.zero) { -// throw Exception("Invalid input parameters: A, B, or K equals 0"); -// } -// -// // M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) -// final HN = hashBigInt(N); -// final Hg = hashBigInt(g); -// final Hemail = hashString(email); -// -// // XOR operation on bytes -// final hnBytes = bigIntToBytes(HN); -// final hgBytes = bigIntToBytes(Hg); -// final xorResult = List.generate( -// hnBytes.length, -// (i) => i < hgBytes.length ? hnBytes[i] ^ hgBytes[i] : hnBytes[i], -// ); -// -// // Concatenate all parts -// final concatParts = [ -// xorResult, -// utf8.encode(Hemail), -// hex.decode(salt), -// bigIntToBytes(A), -// bigIntToBytes(B), -// bigIntToBytes(K), -// ].expand((x) => x).toList(); -// -// // Hash the combined value -// return hashBytes(concatParts); -// } -// -// /// Verify the server proof -// static bool verifyServerProof( -// BigInt A, BigInt M, BigInt K, BigInt serverProof) { -// // Verify inputs are not zero -// if (A == BigInt.zero || M == BigInt.zero || K == BigInt.zero) { -// throw Exception("Invalid input parameters: A, M, or K equals 0"); -// } -// -// // Expected server proof: H(A | M | K) -// final expectedProof = hashBytes([ -// ...bigIntToBytes(A), -// ...bigIntToBytes(M), -// ...bigIntToBytes(K), -// ]); -// -// return expectedProof == serverProof; -// } -// -// /// Calculate the parameter x -// static BigInt calculateX(String email, String password, String salt) { -// if (email.isEmpty || password.isEmpty || salt.isEmpty) { -// throw Exception("Email, password, and salt must not be empty"); -// } -// -// final identity = hashString("$email:$password"); -// final saltedIdentity = hex.decode(salt) + utf8.encode(identity); -// return hashBytes(saltedIdentity); -// } -// -// /// Calculate the hash parameter u -// static BigInt calculateU(BigInt A, BigInt B) { -// // Verify inputs are valid -// if (A == BigInt.zero || B == BigInt.zero) { -// throw Exception("Invalid public keys: A or B equals 0"); -// } -// -// final bytes = [...bigIntToBytes(A), ...bigIntToBytes(B)]; -// return hashBytes(bytes); -// } -// -// /// Hash a string -// static String hashString(String input) { -// final bytes = utf8.encode(input); -// final digest = sha256.convert(bytes); -// return digest.toString(); -// } -// -// /// Hash bytes to a BigInt -// static BigInt hashBytes(List bytes) { -// final digest = sha256.convert(bytes); -// return BigInt.parse(digest.toString(), radix: 16); -// } -// -// /// Hash a BigInt to another BigInt -// static BigInt hashBigInt(BigInt value) { -// return hashBytes(bigIntToBytes(value)); -// } -// -// /// Convert a BigInt to bytes -// static List bigIntToBytes(BigInt value) { -// final hex = -// value.toRadixString(16).padLeft((value.bitLength + 7) ~/ 8 * 2, '0'); -// return (hex.length % 2 == 0) ? _hexToBytes(hex) : _hexToBytes('0$hex'); -// } -// -// /// Convert hex string to bytes -// static List _hexToBytes(String hex) { -// final result = []; -// for (var i = 0; i < hex.length; i += 2) { -// result.add(int.parse(hex.substring(i, i + 2), radix: 16)); -// } -// return result; -// } -// -// /// Simulate the Node server proof calculation -// static BigInt simulateNodeServerProof({ -// required BigInt A, -// required BigInt b, -// required BigInt verifier, -// required BigInt B, -// required String email, -// required String salt, -// required BigInt clientProof, -// }) { -// // 1) Check A != 0 mod N -// if (A % N == BigInt.zero) { -// throw Exception("Invalid A"); -// } -// -// // 2) Calculate u = H(A|B) -// final u = calculateU(A, B); -// if (u == BigInt.zero) { -// throw Exception("Invalid u"); -// } -// -// // 3) S = (A * (v^u))^b % N -// final vu = modPow(verifier, u, N); -// final Avu = (A * vu) % N; -// final S = modPow(Avu, b, N); -// -// // 4) K = H(S) -// final K = _hashHex(S.toRadixString(16)); -// -// // 5) expected M = H(H(N)^H(g) | H(email) | salt | A | B | K) -// final expectedM = _calculateClientProofNode(email, salt, A, B, K); -// if (expectedM != clientProof) { -// throw Exception("Client proof mismatch"); -// } -// -// // 6) server proof = H(A| M| K) -// return _calculateServerProofNode(A, clientProof, K); -// } -// -// // Minimal Node-like helpers in Dart: -// -// static BigInt modPow(BigInt base, BigInt exponent, BigInt modulus) { -// BigInt result = BigInt.one; -// BigInt curBase = base % modulus; -// BigInt e = exponent; -// -// while (e > BigInt.zero) { -// if (e & BigInt.one == BigInt.one) { -// result = (result * curBase) % modulus; -// } -// e >>= 1; -// curBase = (curBase * curBase) % modulus; -// } -// return result; -// } -// -// static BigInt _hashHex(String hexStr) { -// final digest = sha256.convert(utf8.encode(hexStr)); -// return BigInt.parse(digest.toString(), radix: 16); -// } -//} - class SRP { static String SRP_N_HEX = (""" AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73""") From 9d1f22a45c564f498556b160be0604e8435116cd Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sat, 1 Mar 2025 17:21:08 +0400 Subject: [PATCH 14/25] WIP redoing auth api to fix some weird issue i couldnt figure out with srp. registration complete --- .gitignore | 1 + api/src/controllers/auth.ts | 710 ++++++++++++----------- api/src/index.ts | 84 ++- api/src/routes/auth.ts | 28 +- api/src/services/auth/auth.ts | 164 ++++-- api/src/services/db/repositories/user.ts | 242 ++++---- api/src/util.ts | 38 +- app/lib/debug/srp_debugger.dart | 63 -- app/lib/main.dart | 71 ++- app/lib/screens/auth/sign_in.dart | 57 ++ app/lib/services/auth.dart | 55 +- 11 files changed, 879 insertions(+), 634 deletions(-) delete mode 100644 app/lib/debug/srp_debugger.dart create mode 100644 app/lib/screens/auth/sign_in.dart diff --git a/.gitignore b/.gitignore index f018c76..283814c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ **/*.env **/*venv **/node_modules +**/dump.rdb diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index be2ca55..49d1cba 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -1,25 +1,13 @@ import { Response } from 'express'; +import { AuthenticatedRequest } from '../schemas/auth/auth'; +import { TokenService } from '../services/auth/token'; +import { tryAPIController, validateSchema } from '../util'; import { - Email, - emailSchema, InvalidUserError, InvalidUserType, - loginDataSchema, registerDataSchema, } from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; -import { MFAService } from '../services/auth/mfa'; -import { - AuthenticatedRequest, - MFAError, - MFACode, - mfaCodeSchema, - MFAErrorType, - IncorrectPasswordError, -} from '../schemas/auth/auth'; -import { TokenService } from '../services/auth/token'; -import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; -import { validateSchema } from '../util'; const MFA_TOKEN_COOKIE_NAME = 'mfa-token'; const ACCESS_TOKEN_COOKIE_NAME = 'access-token'; @@ -86,340 +74,384 @@ export class AuthController { res.clearCookie(MFA_TOKEN_COOKIE_NAME); } - public static async register(req: AuthenticatedRequest, res: Response) { - try { - // check if they are already logged in - if (req.user) { - console.log(req.user); - - res.status(400).send({ error: 'Already logged in' }); - return; - } - - const data = validateSchema(res, registerDataSchema, req.body); - if (!data) { - return; - } - const as = new AuthService(); - const { userId, formattedKey } = await as.initUserSRP(data); - - res.status(201).send({ userId, formattedKey }); - return; - } catch (e) { - if ( - e instanceof InvalidUserError && - e.type === InvalidUserType.ALREADY_EXISTS - ) { - // don't tell the client the user doesn't already exist - res.status(400).send({ error: 'Invalid request' }); - return; - } - - console.error(e); - res.status(500).send('Internal Server Error'); - return; - } - } - - public static async initiateAuthSession( - req: AuthenticatedRequest, - res: Response, - ) { - try { - // check if they are already logged in - if (req.user) { - console.log(req.user); - - res.status(400).send({ error: 'Already logged in' }); - return; - } - - const email: Email | undefined = validateSchema( - res, - emailSchema, - req.query.email, - ); - - if (!email) { - return; - } - - const as = new AuthService(); - - try { - const { salt, B } = await as.initAuthSession(email); - - res.status(200).send({ salt, B }); - } catch (e) { - if (e instanceof InvalidUserError) { - // don't tell the client the user doesn't exist - res.status(400).send({ error: 'Invalid request' }); + public static register(req: AuthenticatedRequest, res: Response) { + tryAPIController( + res, + async () => { + // check if any user is already logged in + if (req.user) { + res.status(400).send({ error: 'Already logged in' }); return; - } else { - throw e; } - } - } catch (e) { - console.error(e); - - res.status(500).send({ error: 'Internal server error' }); - return; - } - } - - public static async confirmMFA(req: AuthenticatedRequest, res: Response) { - try { - const deviceId = req.deviceId!; - - // get mfa token - const mfaToken = req.cookies['mfa-token'] as string | undefined; - console.log(req.cookies); - if (!mfaToken) { - res.status(400).send({ error: 'MFA token not found' }); - return; - } - - let code: MFACode; - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - code = mfaCodeSchema.parse(req.body.code); - } catch (_) { - res.status(400).send({ error: 'Invalid code' }); - return; - } - - // verify mfa token - const ts = new TokenService(); - let mfaPayload: MFATokenPayload; - try { - mfaPayload = await ts.verifyMFAToken(mfaToken); - console.log('mfaPayload:', mfaPayload); - } catch (e) { - if (e instanceof InvalidTokenError) { - res.status(401).send({ error: 'Invalid MFA token' }); - return; - } else { - console.error(e); - res.status(500).send({ error: 'Internal Server Error' }); + // get data from body + const data = validateSchema(res, registerDataSchema, req.body); + if (!data) { return; } - } - if (deviceId !== mfaPayload.deviceId) { - res.status(400).send({ error: 'Invalid device id' }); + const as = new AuthService(); + const { userId, formattedKey } = await as.registerUser(data); + res.status(201).send({ userId, formattedKey }); return; - } - - const as = new AuthService(); - try { - await as.confirmUserMFA(mfaPayload.userId, code); - const { accessToken, refreshToken, idToken } = - await ts.generateAllTokens(mfaPayload.userId, deviceId); - this.deleteMFACookie(res); - this.writeAuthCookies(res, accessToken, refreshToken, idToken); - res.status(200).send(); - return; - } catch (e) { - // mfa is valid, create a new one since the old one is now blacklisted - const newMfaToken = await ts.createMFAToken( - mfaPayload.userId, - mfaPayload.deviceId, - mfaPayload.formattedKey, - ); - this.writeMFACookie(res, newMfaToken); - if (e instanceof MFAError) { - switch (e.type) { - case MFAErrorType.INCORRECT_CODE: - res.status(400).send({ error: 'Incorrect MFA Code' }); - break; - case MFAErrorType.MFA_ALREADY_CONFIRMED: - res.status(400).send({ error: 'MFA already confirmed' }); - break; - case MFAErrorType.MFA_NOT_CONFIRMED: - // this should never happen - console.error('mfa not confirmed in confirm mfa'); - res.status(500).send({ error: 'Internal Server Error' }); - break; - } - } else { - console.error(e); - res - .status(400) - // user does not exist but don't tell client that - .send({ error: 'Invalid request' }); - } - } - return; - } catch (e) { - console.error(e); - res.status(500).send({ error: 'Internal Server Error' }); - } - } - - public static async login(req: AuthenticatedRequest, res: Response) { - try { - // check if they are already logged in - if (req.user) { - res.status(400).send({ error: 'Already logged in' }); - return; - } - - const data = validateSchema(res, loginDataSchema, req.body); - - if (!data) { - return; - } - - const as = new AuthService(); - - // get auth session - const session = await as.getAuthSession(data.email); - - // check it exists - if (!session) { - res.status(404).send({ error: 'Auth session does not exist' }); - return; - } - - try { - const { user, mfa, Ms } = await as.login({ - ...data, - ...session, - verifier: BigInt(session.verifier), - }); - - // generate mfa token to send back to user - const ts = new TokenService(); - const mfaToken = await ts.createMFAToken( - user._id.toString(), - req.deviceId!, - mfa.confirmed ? undefined : mfa.formattedKey, - ); - - this.writeMFACookie(res, mfaToken); - - if (mfa.confirmed) { - res.status(200).send({ Ms }); - } else { - const ms = new MFAService(); - const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); - res - .status(200) - .send({ Ms, formattedKey: mfa.formattedKey, mfaQRUri }); - } - } catch (e) { + }, + (e) => { if ( - e instanceof InvalidUserError || - e instanceof IncorrectPasswordError + e instanceof InvalidUserError && + e.type === InvalidUserType.ALREADY_EXISTS ) { - res.status(400).send({ error: 'Incorrect email or password' }); - return; - } else { - throw e; + // don't tell the client the user doesn't already exist, just return a + // generic error + res.status(400).send({ error: 'Invalid request' }); + return true; } - } - } catch (e) { - console.error(e); - res.status(500).send({ error: 'Internal Server Error' }); - } + return false; + }, + ); } - public static async verifyMFA(req: AuthenticatedRequest, res: Response) { - try { - // get mfa token - const mfaToken = req.cookies['mfa-token'] as string | undefined; - console.log(req.cookies); - - if (!mfaToken) { - res.status(400).send({ error: 'MFA token not found' }); - return; - } - - let code: MFACode; - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - code = mfaCodeSchema.parse(req.body.code); - } catch (_) { - res.status(400).send({ error: 'Invalid code' }); - return; - } - - // verify mfa token - const ts = new TokenService(); - let mfaPayload: MFATokenPayload; - try { - mfaPayload = await ts.verifyMFAToken(mfaToken); - console.log('mfaPayload:', mfaPayload); - } catch (e) { - if (e instanceof InvalidTokenError) { - res.status(401).send({ error: 'Invalid MFA token' }); - return; - } else { - console.error(e); - res.status(500).send({ error: 'Internal Server Error' }); - return; - } - } - - if (req.deviceId !== mfaPayload.deviceId) { - res.status(400).send({ error: 'Invalid device id' }); - return; - } - - const as = new AuthService(); - try { - const result = await as.verifyMFA(mfaPayload.userId, code); - if (!result) { - // mfa is valid, create a new one since the old one is now blacklisted - const newMfaToken = await ts.createMFAToken( - mfaPayload.userId, - mfaPayload.deviceId, - mfaPayload.formattedKey, - ); - this.writeMFACookie(res, newMfaToken); - res.status(400).send({ error: 'Incorrect MFA Code' }); - return; - } - - // mfa correct, generate new tokens - const { accessToken, refreshToken, idToken } = - await ts.generateAllTokens(mfaPayload.userId, mfaPayload.deviceId); - this.writeAuthCookies(res, accessToken, refreshToken, idToken); - this.deleteMFACookie(res); - res.status(200).send(); - return; - } catch (e) { - if (e instanceof MFAError) { - // mfa is valid, create a new one since the old one is now blacklisted - const newMfaToken = await ts.createMFAToken( - mfaPayload.userId, - mfaPayload.deviceId, - mfaPayload.formattedKey, - ); - this.writeMFACookie(res, newMfaToken); - switch (e.type) { - case MFAErrorType.INCORRECT_CODE: - res.status(400).send({ error: 'Incorrect MFA Code' }); - break; - case MFAErrorType.MFA_ALREADY_CONFIRMED: - // this should never happen - console.error('mfa already confirmed in verify mfa'); - res.status(500).send({ error: 'Internal Server Error' }); - break; - case MFAErrorType.MFA_NOT_CONFIRMED: - res.status(400).send({ error: 'MFA not confirmed' }); - break; - } - } else { - console.error(e); - res.status(500).send({ error: 'Internal Server Error' }); - } - return; - } - } catch (e) { - console.error(e); - res.status(500).send({ error: 'Internal server error' }); - } - } + //public static async register(req: AuthenticatedRequest, res: Response) { + // try { + // // check if they are already logged in + // if (req.user) { + // console.log(req.user); + // + // res.status(400).send({ error: 'Already logged in' }); + // return; + // } + // + // const data = validateSchema(res, registerDataSchema, req.body); + // if (!data) { + // return; + // } + // + // console.log('register data:', data); + // + // const as = new AuthService(); + // const { userId, formattedKey } = await as.initUserSRP(data); + // + // res.status(201).send({ userId, formattedKey }); + // return; + // } catch (e) { + // if ( + // e instanceof InvalidUserError && + // e.type === InvalidUserType.ALREADY_EXISTS + // ) { + // // don't tell the client the user doesn't already exist + // res.status(400).send({ error: 'Invalid request' }); + // return; + // } + // + // console.error(e); + // res.status(500).send('Internal Server Error'); + // return; + // } + //} + + //public static async initiateAuthSession( + // req: AuthenticatedRequest, + // res: Response, + //) { + // try { + // // check if they are already logged in + // if (req.user) { + // console.log(req.user); + // + // res.status(400).send({ error: 'Already logged in' }); + // return; + // } + // + // const email: Email | undefined = validateSchema( + // res, + // emailSchema, + // req.query.email, + // ); + // + // if (!email) { + // return; + // } + // + // const as = new AuthService(); + // + // try { + // const { salt, B } = await as.initAuthSession(email); + // + // console.log('salt:', salt); + // console.log('B:', B); + // + // res.status(200).send({ salt, B }); + // } catch (e) { + // if (e instanceof InvalidUserError) { + // // don't tell the client the user doesn't exist + // res.status(400).send({ error: 'Invalid request' }); + // return; + // } else { + // throw e; + // } + // } + // } catch (e) { + // console.error(e); + // + // res.status(500).send({ error: 'Internal server error' }); + // return; + // } + //} + + //public static async login(req: AuthenticatedRequest, res: Response) { + // try { + // // check if they are already logged in + // if (req.user) { + // res.status(400).send({ error: 'Already logged in' }); + // return; + // } + // + // const data = validateSchema(res, loginDataSchema, req.body); + // + // if (!data) { + // return; + // } + // + // console.log('data:', data); + // + // const as = new AuthService(); + // + // // get auth session + // const session = await as.getAuthSession(data.email); + // + // // check it exists + // if (!session) { + // res.status(404).send({ error: 'Auth session does not exist' }); + // return; + // } + // + // try { + // const { user, mfa, Ms } = await as.login({ + // ...data, + // ...session, + // verifier: BigInt(session.verifier), + // }); + // + // // generate mfa token to send back to user + // const ts = new TokenService(); + // const mfaToken = await ts.createMFAToken( + // user._id.toString(), + // req.deviceId!, + // mfa.confirmed ? undefined : mfa.formattedKey, + // ); + // + // this.writeMFACookie(res, mfaToken); + // + // if (mfa.confirmed) { + // res.status(200).send({ Ms }); + // } else { + // const ms = new MFAService(); + // const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); + // res + // .status(200) + // .send({ Ms, formattedKey: mfa.formattedKey, mfaQRUri }); + // } + // } catch (e) { + // if ( + // e instanceof InvalidUserError || + // e instanceof IncorrectPasswordError + // ) { + // res.status(400).send({ error: 'Incorrect email or password' }); + // return; + // } else { + // throw e; + // } + // } + // } catch (e) { + // console.error(e); + // res.status(500).send({ error: 'Internal Server Error' }); + // } + //} + + //public static async confirmMFA(req: AuthenticatedRequest, res: Response) { + // try { + // const deviceId = req.deviceId!; + // + // // get mfa token + // const mfaToken = req.cookies['mfa-token'] as string | undefined; + // console.log(req.cookies); + // + // if (!mfaToken) { + // res.status(400).send({ error: 'MFA token not found' }); + // return; + // } + // + // let code: MFACode; + // try { + // // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + // code = mfaCodeSchema.parse(req.body.code); + // } catch (_) { + // res.status(400).send({ error: 'Invalid code' }); + // return; + // } + // + // // verify mfa token + // const ts = new TokenService(); + // let mfaPayload: MFATokenPayload; + // try { + // mfaPayload = await ts.verifyMFAToken(mfaToken); + // console.log('mfaPayload:', mfaPayload); + // } catch (e) { + // if (e instanceof InvalidTokenError) { + // res.status(401).send({ error: 'Invalid MFA token' }); + // return; + // } else { + // console.error(e); + // res.status(500).send({ error: 'Internal Server Error' }); + // return; + // } + // } + // + // if (deviceId !== mfaPayload.deviceId) { + // res.status(400).send({ error: 'Invalid device id' }); + // return; + // } + // + // const as = new AuthService(); + // try { + // await as.confirmUserMFA(mfaPayload.userId, code); + // const { accessToken, refreshToken, idToken } = + // await ts.generateAllTokens(mfaPayload.userId, deviceId); + // this.deleteMFACookie(res); + // this.writeAuthCookies(res, accessToken, refreshToken, idToken); + // res.status(200).send(); + // return; + // } catch (e) { + // // mfa is valid, create a new one since the old one is now blacklisted + // const newMfaToken = await ts.createMFAToken( + // mfaPayload.userId, + // mfaPayload.deviceId, + // mfaPayload.formattedKey, + // ); + // this.writeMFACookie(res, newMfaToken); + // if (e instanceof MFAError) { + // switch (e.type) { + // case MFAErrorType.INCORRECT_CODE: + // res.status(400).send({ error: 'Incorrect MFA Code' }); + // break; + // case MFAErrorType.MFA_ALREADY_CONFIRMED: + // res.status(400).send({ error: 'MFA already confirmed' }); + // break; + // case MFAErrorType.MFA_NOT_CONFIRMED: + // // this should never happen + // console.error('mfa not confirmed in confirm mfa'); + // res.status(500).send({ error: 'Internal Server Error' }); + // break; + // } + // } else { + // console.error(e); + // res + // .status(400) + // // user does not exist but don't tell client that + // .send({ error: 'Invalid request' }); + // } + // } + // return; + // } catch (e) { + // console.error(e); + // res.status(500).send({ error: 'Internal Server Error' }); + // } + //} + + //public static async verifyMFA(req: AuthenticatedRequest, res: Response) { + // try { + // // get mfa token + // const mfaToken = req.cookies['mfa-token'] as string | undefined; + // console.log(req.cookies); + // + // if (!mfaToken) { + // res.status(400).send({ error: 'MFA token not found' }); + // return; + // } + // + // let code: MFACode; + // try { + // // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + // code = mfaCodeSchema.parse(req.body.code); + // } catch (_) { + // res.status(400).send({ error: 'Invalid code' }); + // return; + // } + // + // // verify mfa token + // const ts = new TokenService(); + // let mfaPayload: MFATokenPayload; + // try { + // mfaPayload = await ts.verifyMFAToken(mfaToken); + // console.log('mfaPayload:', mfaPayload); + // } catch (e) { + // if (e instanceof InvalidTokenError) { + // res.status(401).send({ error: 'Invalid MFA token' }); + // return; + // } else { + // console.error(e); + // res.status(500).send({ error: 'Internal Server Error' }); + // return; + // } + // } + // + // if (req.deviceId !== mfaPayload.deviceId) { + // res.status(400).send({ error: 'Invalid device id' }); + // return; + // } + // + // const as = new AuthService(); + // try { + // const result = await as.verifyMFA(mfaPayload.userId, code); + // if (!result) { + // // mfa is valid, create a new one since the old one is now blacklisted + // const newMfaToken = await ts.createMFAToken( + // mfaPayload.userId, + // mfaPayload.deviceId, + // mfaPayload.formattedKey, + // ); + // this.writeMFACookie(res, newMfaToken); + // res.status(400).send({ error: 'Incorrect MFA Code' }); + // return; + // } + // + // // mfa correct, generate new tokens + // const { accessToken, refreshToken, idToken } = + // await ts.generateAllTokens(mfaPayload.userId, mfaPayload.deviceId); + // this.writeAuthCookies(res, accessToken, refreshToken, idToken); + // this.deleteMFACookie(res); + // res.status(200).send(); + // return; + // } catch (e) { + // if (e instanceof MFAError) { + // // mfa is valid, create a new one since the old one is now blacklisted + // const newMfaToken = await ts.createMFAToken( + // mfaPayload.userId, + // mfaPayload.deviceId, + // mfaPayload.formattedKey, + // ); + // this.writeMFACookie(res, newMfaToken); + // switch (e.type) { + // case MFAErrorType.INCORRECT_CODE: + // res.status(400).send({ error: 'Incorrect MFA Code' }); + // break; + // case MFAErrorType.MFA_ALREADY_CONFIRMED: + // // this should never happen + // console.error('mfa already confirmed in verify mfa'); + // res.status(500).send({ error: 'Internal Server Error' }); + // break; + // case MFAErrorType.MFA_NOT_CONFIRMED: + // res.status(400).send({ error: 'MFA not confirmed' }); + // break; + // } + // } else { + // console.error(e); + // res.status(500).send({ error: 'Internal Server Error' }); + // } + // return; + // } + // } catch (e) { + // console.error(e); + // res.status(500).send({ error: 'Internal server error' }); + // } + //} } diff --git a/api/src/index.ts b/api/src/index.ts index ee8ad91..cfc0409 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -45,11 +45,14 @@ async function start() { app.listen(port, () => { console.log(`Server running on port ${port}`); + console.log('\n\n\n'); }); } -//start(); +// eslint-disable-next-line @typescript-eslint/no-floating-promises +start(); +// eslint-disable-next-line @typescript-eslint/no-unused-vars function testSRP() { const email = 'hady@gmail.com'; const password = 'password'; @@ -62,30 +65,91 @@ function testSRP() { verifier = modPow(SRP.g, x, SRP.N); } + console.log('verifier:', verifier.toString(16)); + + // server keys + const { b, B } = SRP.generateServerKeys(verifier); + //const bString = + // '39083a31e24251fae9fa74a3f2f9ea9cc3827eb18179c2563333cd3cfc0cae1e'; + //const BString = + // '586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; + //const b = BigInt('0x' + bString); + //const B = BigInt('0x' + BString); + + console.log('b:', b.toString(16)); + console.log('B:', B.toString(16)); + + // client keys + const a = SRP.generateRandomBigInt(32); + //const aString = + // 'f1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; + //const a = BigInt('0x' + aString); + console.log('a:', a.toString(16)); + + // simulate client calculating proof + const { A, M } = SRP.simulateDartClientProof(email, password, salt, a, B); + + console.log('test A:', A.toString(16)); + + // verify proof on server + SRP.verifyClientProof({ email, salt, verifier, A, b, B, Mc: M }); + + console.log('\n\n\n'); +} + +//testSRP(); + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function testSRP2() { + const email = 'hady@gmail.com'; + const password = 'password'; + const salt = 'e231b0fd7f9106a2ca2cc2fc81167495'; + let verifier: bigint; + + { + const x = SRP.calculateX(email, password, salt); + //g.modPow(x, N) + verifier = modPow(SRP.g, x, SRP.N); + } + + console.log(''); + console.log('verifier:', verifier.toString(16)); + console.log(''); + // server keys - //const { b, B } = SRP.generateServerKeys(verifier); - const bString = - '39083a31e24251fae9fa74a3f2f9ea9cc3827eb18179c2563333cd3cfc0cae1e'; - const BString = - '586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; - const b = BigInt('0x' + bString); - const B = BigInt('0x' + BString); + const { b, B } = SRP.generateServerKeys(verifier); + //const bString = + // '39083a31e24251fae9fa74a3f2f9ea9cc3827eb18179c2563333cd3cfc0cae1e'; + //const BString = + // '586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; + //const b = BigInt('0x' + bString); + //const B = BigInt('0x' + BString); console.log('b:', b.toString(16)); console.log('B:', B.toString(16)); + console.log(''); // client keys //const a = SRP.generateRandomBigInt(32); const aString = - 'f1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; + '31fbe9b30e7a5037f37137483b0909e0dce1c4ac4de47a269879e4481044d282'; const a = BigInt('0x' + aString); console.log('a:', a.toString(16)); + console.log(''); // simulate client calculating proof const { A, M } = SRP.simulateDartClientProof(email, password, salt, a, B); + console.log(''); + console.log('test A:', A.toString(16)); + console.log(''); + // verify proof on server + console.log(''); SRP.verifyClientProof({ email, salt, verifier, A, b, B, Mc: M }); + console.log(''); + + console.log('\n\n\n'); } -testSRP(); +//testSRP2(); diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index 6551a42..1110d01 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -7,18 +7,18 @@ authRouter.use(requireDeviceId); authRouter.post('/register', (req, res) => AuthController.register(req, res)); -authRouter.post('/init', (req, res) => - AuthController.initiateAuthSession(req, res), -); +//authRouter.post('/init', (req, res) => +// AuthController.initiateAuthSession(req, res), +//); +// +//authRouter.post('/login', (req, res) => AuthController.login(req, res)); -authRouter.post('/login', (req, res) => AuthController.login(req, res)); - -authRouter.post('/mfa/confirm', (req, res) => - AuthController.confirmMFA(req, res), -); - -// TODO: get mfa formatted key route (only if mfa is unconfirmed) - -authRouter.post('/mfa/verify', (req, res) => - AuthController.verifyMFA(req, res), -); +//authRouter.post('/mfa/confirm', (req, res) => +// AuthController.confirmMFA(req, res), +//); +// +//// TODO: get mfa formatted key route (only if mfa is unconfirmed) +// +//authRouter.post('/mfa/verify', (req, res) => +// AuthController.verifyMFA(req, res), +//); diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index bbf8614..dcd5517 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -7,6 +7,7 @@ import { IncorrectPasswordError, srpSessionSchema, SRPSession, + MFAFormattedKey, } from '../../schemas/auth/auth'; import { Email, @@ -31,78 +32,112 @@ export class AuthService { } /** - * Register the user with the system and initiate their authentication - * information - * @param data - The user's data - * @param salt - The user's randomly generated salt - * @param verifier - The verifier generated from the user's password by the - * client - * @returns The user's id and their MFA formatted key - * @throws InvalidUserError if the user already exists + * Registers the user with their information and auth data + * @param data - The user's data and auth data + * @returns The user's id and their MFA formatted key so that they can setup + * MFA + * @throws An `InvalidUserError` if the user already exists */ - public async initUserSRP(data: RegisterData) { - // check user doesn't already exists + public async registerUser( + data: RegisterData, + ): Promise<{ userId: ObjectIdOrString; formattedKey: MFAFormattedKey }> { + // check user doesn't already exist const userExists = await this.db.userRepository.userExistsEmail(data.email); if (userExists) { throw new InvalidUserError({ type: InvalidUserType.ALREADY_EXISTS }); } + // generate their mfa info const ms = new MFAService(); const formattedKey = ms.generateMFAFormattedKey(); + + // create the user and get their user id const userId = await this.db.userRepository.createUser(data, formattedKey); return { userId, formattedKey }; } - //public async getUserAuth(email: Email) { + ///** + // * Register the user with the system and initiate their authentication + // * information + // * @param data - The user's data + // * @returns The user's id and their MFA formatted key + // * @throws InvalidUserError if the user already exists + // */ + //public async initUserSRP(data: RegisterData) { + // // check user doesn't already exists + // const userExists = await this.db.userRepository.userExistsEmail(data.email); + // if (userExists) { + // throw new InvalidUserError({ type: InvalidUserType.ALREADY_EXISTS }); + // } + // + // const ms = new MFAService(); + // const formattedKey = ms.generateMFAFormattedKey(); + // const userId = await this.db.userRepository.createUser(data, formattedKey); + // + // return { userId, formattedKey }; //} - /** - * Initialises an SRP auth session for the user - * @param email - The user's email - * @returns The user's session id, salt, and the public key generated by the - * server (B) - * @throws An error if the user does not exist - * @throws An error if the serer failed to create the session - */ - public async initAuthSession(email: Email): Promise<{ - salt: string; - B: bigint; - }> { - const { salt, verifier } = - await this.db.userRepository.getUserSRPCredentials(email); - console.log('got salt and verifier'); - - console.log('generating server keys'); - const { b, B } = SRP.generateServerKeys(BigInt(verifier)); - - // store session - const session = srpSessionSchema.parse({ - sessionId: email, - salt, - verifier, - b, - B, - }); - // use email as session id to only have one session id per user - await this.db.srpSessionRepository.storeSRPAuthSession(email, session); - - console.log('session stored'); + //public async getUserAuth(email: Email) { + //} - return { - salt, - B, - }; - } + ///** + // * Initialises an SRP auth session for the user + // * @param email - The user's email + // * @returns The user's session id, salt, and the public key generated by the + // * server (B) + // * @throws An error if the user does not exist + // * @throws An error if the serer failed to create the session + // */ + //public async initAuthSession(email: Email): Promise<{ + // salt: string; + // B: bigint; + //}> { + // const { salt, verifier } = + // await this.db.userRepository.getUserSRPCredentials(email); + // //console.log('got salt and verifier'); + // console.log('salt:', salt); + // console.log('verifier:', verifier); + // + // console.log(''); + // + // console.log('generating server keys'); + // const { b, B } = SRP.generateServerKeys(BigInt(verifier)); + // console.log('b:', b.toString(16)); + // console.log('B:', B.toString(16)); + // console.log(''); + // + // // store session + // const session = srpSessionSchema.parse({ + // sessionId: email, + // salt, + // verifier, + // b, + // B, + // }); + // + // console.log('session being passed to db service:', session); + // console.log(''); + // + // // use email as session id to only have one session id per user + // await this.db.srpSessionRepository.storeSRPAuthSession(email, session); + // + // console.log('session stored'); + // + // return { + // salt, + // B, + // }; + //} - /** - * Get the user's SRP auth session - * @param email - The user's email - * @returns The SRP auth session if it exists - */ - public async getAuthSession(email: Email): Promise { - return await this.db.srpSessionRepository.getSRPAuthSession(email); - } + ///** + // * Get the user's SRP auth session + // * @param email - The user's email + // * @returns The SRP auth session if it exists + // */ + //public async getAuthSession(email: Email): Promise { + // return await this.db.srpSessionRepository.getSRPAuthSession(email); + //} ///** // * Registers a user with our system @@ -248,6 +283,18 @@ export class SRP { }): bigint { const { email, salt, verifier, A, b, B, Mc } = data; + console.log(''); + console.log('email:', email); + console.log('salt:', salt); + console.log('verifier:', verifier.toString(16)); + console.log('A:', A.toString(16)); + console.log('b:', b.toString(16)); + console.log('B:', B.toString(16)); + console.log('Mc:', Mc.toString(16)); + + console.log(''); + console.log(''); + // Security check: A should not be 0 mod N if (A % this.N === BigInt(0)) { console.log('A % N === 0, throwing'); @@ -258,6 +305,9 @@ export class SRP { // Calculate u = H(A | B) const u = this.calculateU(A, B); + console.log('u:', u.toString(16)); + console.log(''); + // Security check: u should not be 0 if (u === BigInt(0)) { console.log('u === 0, throwing'); @@ -270,8 +320,12 @@ export class SRP { const Avu = (A * vu) % this.N; const S = modPow(Avu, b, this.N); + console.log('S:', S.toString(16)); + console.log(''); + // Calculate K = H(S) const K = this.hash(S.toString(16)); + console.log('K:', K.toString(16)); // Calculate expected client proof const expectedMc = this.calculateClientProof(email, salt, A, B, K); diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 140a6c0..4d700e2 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ import { RedisClientType } from 'redis'; import { DatabaseRepository } from '../repo'; import { Db, MongoClient, ObjectId } from 'mongodb'; @@ -62,7 +63,8 @@ export class UserRepository extends DatabaseRepository { ): Promise { const result = await this.collection.insertOne({ ...data, - verifier: `0x${data.verifier.toString()}`, + // convert the verifier to a hex string + verifier: `0x${data.verifier.toString(16)}`, mfaFormattedKey, mfaConfirmed: false, }); @@ -259,125 +261,133 @@ export class SRPSessionRepository extends DatabaseRepository { * Sessions older than SRP_SESSION_EXPIRY_SECONDS are considered expired and won't be loaded. */ public async loadSessionsToCache(): Promise { - const cutoffTime = new Date(Date.now() - SRP_SESSION_EXPIRY_SECONDS * 1000); - - // Find all sessions that were created within the expiry window - const docs = await this.collection - .find({ - createdAt: { $gt: cutoffTime }, - }) - .toArray(); - - console.log(`Loading ${docs.length} SRP sessions to Redis cache`); - - const promises = docs.map(async (doc) => { - if (!doc.sessionId) return; - - // Calculate remaining TTL - const createdAt = - doc.createdAt instanceof Date ? doc.createdAt : new Date(doc.createdAt); - const elapsedSeconds = Math.floor( - (Date.now() - createdAt.getTime()) / 1000, - ); - const remainingTTL = SRP_SESSION_EXPIRY_SECONDS - elapsedSeconds; - - // Only cache if there's remaining time - if (remainingTTL <= 0) return; - - try { - await this.redis.set( - `${SRP_SESSION_KEY_PREFIX}:${doc.sessionId}`, - JSON.stringify(srpSessionJSONSchema.parse(doc)), - { - EX: remainingTTL, - }, - ); - } catch (e) { - console.error(`Failed to cache SRP session ${doc.sessionId}:`, e); - } - }); - - await Promise.all(promises); + // TODO: uncomment + //const cutoffTime = new Date(Date.now() - SRP_SESSION_EXPIRY_SECONDS * 1000); + // + //// Find all sessions that were created within the expiry window + //const docs = await this.collection + // .find({ + // createdAt: { $gt: cutoffTime }, + // }) + // .toArray(); + // + //console.log(`Loading ${docs.length} SRP sessions to Redis cache`); + // + //const promises = docs.map(async (doc) => { + // if (!doc.sessionId) return; + // + // // Calculate remaining TTL + // const createdAt = + // doc.createdAt instanceof Date ? doc.createdAt : new Date(doc.createdAt); + // const elapsedSeconds = Math.floor( + // (Date.now() - createdAt.getTime()) / 1000, + // ); + // const remainingTTL = SRP_SESSION_EXPIRY_SECONDS - elapsedSeconds; + // + // // Only cache if there's remaining time + // if (remainingTTL <= 0) return; + // + // try { + // await this.redis.set( + // `${SRP_SESSION_KEY_PREFIX}:${doc.sessionId}`, + // JSON.stringify(srpSessionJSONSchema.parse(doc)), + // { + // EX: remainingTTL, + // }, + // ); + // } catch (e) { + // console.error(`Failed to cache SRP session ${doc.sessionId}:`, e); + // } + //}); + // + //await Promise.all(promises); } // TODO: implement configure collection public async configureCollection(): Promise { - await Promise.all([ - // Create unique index on sessionId - this.collection.createIndex({ sessionId: 1 }, { unique: true }), - // Create index on createdAt for expire queries - this.collection.createIndex({ createdAt: 1 }), - ]); - } - - public async storeSRPAuthSession(sessionId: string, session: SRPSession) { - // convert bigints to strings - const sessionJSON = srpSessionJSONSchema.parse({ - ...session, - createdAt: new Date(), - }); - - // store session in redis - const redisPromise = this.redis.set( - `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, - JSON.stringify(srpSessionJSONSchema.parse(sessionJSON)), - { - EX: SRP_SESSION_EXPIRY_SECONDS, - }, - ); - - // store session in db (fail-safe) using upsert - const mongoPromise = this.collection.updateOne( - { sessionId: sessionId }, - { $set: sessionJSON }, - { upsert: true }, - ); - - try { - await redisPromise; - return; - } catch (e) { - console.error( - 'Failed to store SRP session in redis. trying mongo. error:', - e, - ); - try { - await mongoPromise; - } catch (mongoError) { - console.error('Failed to store SRP session in mongo:', mongoError); - throw new Error( - 'Failed to store SRP session in both Redis and MongoDB', - ); - } - } + //await Promise.all([ + // // Create unique index on sessionId + // this.collection.createIndex({ sessionId: 1 }, { unique: true }), + // // Create index on createdAt for expire queries + // this.collection.createIndex({ createdAt: 1 }), + //]); } - public async getSRPAuthSession( - sessionId: string, - ): Promise { - const redisResult = await this.redis.get( - `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, - ); - if (redisResult) { - try { - console.log( - 'redis result:', - srpSessionSchema.parse(JSON.parse(redisResult)), - ); - - return srpSessionSchema.parse(JSON.parse(redisResult)); - } catch (e) { - console.error('Failed to parse SRP session from redis', e); - // ignore, try mongo - } - } - const mongoResult = await this.collection.findOne({ - sessionId, - }); - if (!mongoResult) { - return null; - } - console.log('mongo result:', srpSessionSchema.parse(mongoResult)); - return srpSessionSchema.parse(mongoResult); - } + //public async storeSRPAuthSession(sessionId: string, session: SRPSession) { + // // convert bigints to strings + // const sessionJSON = srpSessionJSONSchema.parse({ + // ...session, + // createdAt: new Date(), + // }); + // + // console.log('session being stored in db:', sessionJSON); + // console.log(''); + // + // // TODO: uncomment + // // store session in redis + // //const redisPromise = this.redis.set( + // // `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, + // // JSON.stringify(srpSessionJSONSchema.parse(sessionJSON)), + // // { + // // EX: SRP_SESSION_EXPIRY_SECONDS, + // // }, + // //); + // + // // store session in db (fail-safe) using upsert + // const mongoPromise = this.collection.updateOne( + // { sessionId: sessionId }, + // { $set: sessionJSON }, + // { upsert: true }, + // ); + // + // // TODO: uncomment + // //try { + // //await redisPromise; + // //return; + // //} catch (e) { + // //console.error( + // // 'Failed to store SRP session in redis. trying mongo. error:', + // // e, + // //); + // try { + // await mongoPromise; + // } catch (mongoError) { + // console.error('Failed to store SRP session in mongo:', mongoError); + // throw new Error('Failed to store SRP session in both Redis and MongoDB'); + // } + // //} + //} + + //public async getSRPAuthSession( + // sessionId: string, + //): Promise { + // // TODO: uncomment + // //const redisResult = await this.redis.get( + // // `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, + // //); + // //if (redisResult) { + // // try { + // // console.log( + // // 'redis result:', + // // srpSessionSchema.parse(JSON.parse(redisResult)), + // // ); + // // + // // return srpSessionSchema.parse(JSON.parse(redisResult)); + // // } catch (e) { + // // console.error('Failed to parse SRP session from redis', e); + // // // ignore, try mongo + // // } + // //} + // const mongoResult = await this.collection.findOne({ + // sessionId, + // }); + // if (!mongoResult) { + // return null; + // } + // console.log( + // 'session retreived from mongo:', + // srpSessionSchema.parse(mongoResult), + // ); + // return srpSessionSchema.parse(mongoResult); + //} } diff --git a/api/src/util.ts b/api/src/util.ts index 8929d27..afb38f3 100644 --- a/api/src/util.ts +++ b/api/src/util.ts @@ -20,6 +20,34 @@ export function validateSchema( } } +/** + * Try's to run a controller, and sends a 500 response if it fails. + * @param res - The response object + * @param controller - the controller to run + * @param customErrorHandling - A function to add custom error handling. It + * returns a true if the error was handled, and false otherwise. This function + * will be called before the default error handling. + */ +export function tryAPIController( + res: Response, + controller: () => Promise, + customErrorHandling?: (err: unknown) => boolean, +) { + const handleError = (err: unknown) => { + if (customErrorHandling && customErrorHandling(err)) { + return; + } + console.log('err caught in tryAPIController'); + console.error(err); + res.status(500).send({ error: 'internal server error' }); + }; + try { + controller().catch(handleError); + } catch (e) { + handleError(e); + } +} + export function bigIntModPow(base: bigint, exp: bigint, mod: bigint): bigint { let result = BigInt(1); base = base % mod; @@ -33,8 +61,8 @@ export function bigIntModPow(base: bigint, exp: bigint, mod: bigint): bigint { return result; } -// test bigintmodpow -export function testBigIntModPow() { - console.log(bigIntModPow(BigInt(2), BigInt(3), BigInt(5))); // Should output 3n (2^3 = 8, 8 mod 5 = 3) - console.log(bigIntModPow(BigInt(3), BigInt(4), BigInt(7))); // Should output 4n (3^4 = 81, 81 mod 7 = 4) -} +//// test bigintmodpow +//export function testBigIntModPow() { +// console.log(bigIntModPow(BigInt(2), BigInt(3), BigInt(5))); // Should output 3n (2^3 = 8, 8 mod 5 = 3) +// console.log(bigIntModPow(BigInt(3), BigInt(4), BigInt(7))); // Should output 4n (3^4 = 81, 81 mod 7 = 4) +//} diff --git a/app/lib/debug/srp_debugger.dart b/app/lib/debug/srp_debugger.dart deleted file mode 100644 index 935102f..0000000 --- a/app/lib/debug/srp_debugger.dart +++ /dev/null @@ -1,63 +0,0 @@ -// import 'dart:convert'; -// import 'package:convert/convert.dart'; -// import 'package:crypto/crypto.dart'; -// import '../services/auth.dart'; - -// class SRPDebugger { -// /// Generate detailed debug information about SRP calculations -// static Map debugSRPCalculation( -// String email, String password, String salt, BigInt a, BigInt B) { -// final result = {}; - -// try { -// // Step 1: Calculate A = g^a % N -// final A = SRP.g.modPow(a, SRP.N); -// result['A'] = "0x${A.toRadixString(16)}"; - -// // Step 2: Calculate u = H(A | B) -// final u = SRP.calculateU(A, B); -// result['u'] = "0x${u.toRadixString(16)}"; - -// // Step 3: Calculate x = H(salt | H(email:password)) -// final x = SRP.calculateX(email, password, salt); -// result['x'] = "0x${x.toRadixString(16)}"; - -// // Step 4: Calculate S = (B - k*g^x)^(a + u*x) % N -// final gx = SRP.g.modPow(x, SRP.N); -// result['gx'] = "0x${gx.toRadixString(16)}"; - -// final kgx = (SRP.k * gx) % SRP.N; -// result['kgx'] = "0x${kgx.toRadixString(16)}"; - -// BigInt base = (B - kgx) % SRP.N; -// if (base < BigInt.zero) base += SRP.N; -// result['base'] = "0x${base.toRadixString(16)}"; - -// final exponent = (a + (u * x)) % (SRP.N - BigInt.one); -// result['exponent'] = "0x${exponent.toRadixString(16)}"; - -// final S = base.modPow(exponent, SRP.N); -// result['S'] = "0x${S.toRadixString(16)}"; - -// // Step 5: Calculate K = H(S) -// final K = SRP.hashBigInt(S); -// result['K'] = "0x${K.toRadixString(16)}"; - -// // Step 6: Calculate M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) -// final M = SRP.calculateClientProof(email, salt, A, B, K); -// result['M'] = "0x${M.toRadixString(16)}"; - -// // Add detailed hash breakdowns to debug possible issues -// result['hash_email_password'] = SRP.hashString("$email:$password"); -// result['hex_salt'] = salt; - -// // Compare with raw SHA-256 calculation -// final rawSha = sha256.convert(utf8.encode("$email:$password")).toString(); -// result['raw_sha256_email_password'] = rawSha; -// } catch (e) { -// result['error'] = e.toString(); -// } - -// return result; -// } -// } diff --git a/app/lib/main.dart b/app/lib/main.dart index e13f377..e000651 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -1,9 +1,10 @@ -// ignore_for_file: unused_local_variable, prefer_const_declarations, avoid_print +// ignore_for_file: unused_local_variable, prefer_const_declarations, avoid_print, constant_identifier_names, non_constant_identifier_names import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:smartify/screens/auth/sign_in.dart'; import 'package:smartify/services/auth.dart'; import 'models/mfa.dart'; @@ -23,28 +24,52 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { - const email = 'hady@gmail.com'; - const password = 'password'; + ////const email = 'hady@gmail.com'; + ////const password = 'password'; + ////////final salt = SRP.generateSalt(); + ////const salt = 'e6eb7979923ebb117785a56ab84f94ff'; + ////final verifier = SRP.deriveVerifier(email, password, salt); + //// + ////const BString = + //// '0x586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; + ////final B = BigInt.parse(BString); + //// + ////const aString = + //// '0xf1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; + ////final a = BigInt.parse(aString); + //// + ////final result = SRP.respondToAuthChallenge(email, password, salt, a, B); + //// + ////print('A: 0x${result.A.toRadixString(16)}'); + ////print('Mc: 0x${result.M.toRadixString(16)}'); + // + //// api test + //const email = 'hady@gmail.com'; + //const password = 'password'; + ////const salt = 'e6eb7979923ebb117785a56ab84f94ff'; ////final salt = SRP.generateSalt(); - const salt = 'e6eb7979923ebb117785a56ab84f94ff'; - final verifier = SRP.deriveVerifier(email, password, salt); - - const BString = - '0x586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; - final B = BigInt.parse(BString); - - const aString = - '0xf1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; - final a = BigInt.parse(aString); - - final result = SRP.respondToAuthChallenge(email, password, salt, a, B); - - final A = result['A']!; - final M = result['M']!; - //final K = result['K']!; - - print('A: ${A.toRadixString(16)}'); - print('M: ${M.toRadixString(16)}'); + ////print(salt); + //const salt = 'e231b0fd7f9106a2ca2cc2fc81167495'; + //final verifier = SRP.deriveVerifier(email, password, salt); + ////print('verifier: 0x${verifier.toRadixString(16)}'); + //final BString = + // '0x982d84e26544a62e722528d94c60dac8082dfd38b33a9558ebd9db190cd5a4fcefa13b466447b03da5ee7e72328d46e2b3d3f523b6dd1d8b3a0bceb628b093b84ba34be6577d075f819cc10a6b5beb17d2b9778b026bed4260c3ddf3ad15c132479828691c7db816de2cdf067df0b78733553c88fa7bcc5d7149bf426a943b28dfe68bd17dab93b19fa4ee57c5113e410e34b302d4ecb72dc8fcf6b00bbb6150d7504f2123868e95e06761ac6d21c3aaa6f1f3b7a35bba1828af129247f5f615eb27e88a3c5de1dc0a3c81b70d2f56f7022266d7024955b945326e5c7ed9921cb3463e5d6d9c723784c53dedce35c9d3875dc29f00fe695d41bc5e5cdde35d04'; + // + ////const BString = + //// '0x4301fd8a79bda87196fd2aa6a47d06642d6eaceb572aba4d5b48e6036cb87448cc6e6d2c2bd232308dd48f69fb9aa3526fc1bccd00c32b9fa023151e95147b8290792bd2d4927e547f10237b829c03cb783c033a9fe3bb89c869cc0b6b772f0f778785b0de5f7e2f20ca78bbca62e26dbd731df08f1bd1d5703ea865e0d86ef5925413536d1ff28200b129cc39084ecc465280dec04aa11253650809150ef8a542cab6a0e2dabd8333f84748b6f3d5f85d552eeba800fe24637df378925312d8ea9f4cceee4dfce82f623cdf59a6683eb8b8d244a994a20c52bb88b17f5996355434269975fd46cc77fdcf385d414e2fbcef730f9291c6d750eeee947ea3467a'; + //final B = BigInt.parse(BString); + ////final a = SRP.generatePrivateKey(); + //final a = BigInt.parse( + // '0x31fbe9b30e7a5037f37137483b0909e0dce1c4ac4de47a269879e4481044d282'); + //final A = SRP.derivePublicKey(a); + // + ////final a = BigInt.parse( + //// '0xf1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'); + //// + //final result = SRP.respondToAuthChallenge(email, password, salt, a, B); + // + //print('A: 0x${result.A.toRadixString(16)}'); + //print('Mc: 0x${result.M.toRadixString(16)}'); return MaterialApp( title: 'Flutter Demo', @@ -67,7 +92,7 @@ class MyApp extends StatelessWidget { colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), - home: const MFATest(), + home: const SignInScreen(), ); } } diff --git a/app/lib/screens/auth/sign_in.dart b/app/lib/screens/auth/sign_in.dart new file mode 100644 index 0000000..0860fd8 --- /dev/null +++ b/app/lib/screens/auth/sign_in.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:smartify/services/auth.dart'; + +class SignInScreen extends StatefulWidget { + const SignInScreen({super.key}); + + @override + State createState() => _SignInScreenState(); +} + +class _SignInScreenState extends State { + final GlobalKey _formKey = GlobalKey(); + + final TextEditingController _emailController = TextEditingController(); + final TextEditingController _passwordController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Sign In'), + ), + body: Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Form( + key: _formKey, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextFormField( + controller: _emailController, + decoration: const InputDecoration(hintText: 'Email'), + ), + const SizedBox(height: 16), + TextFormField( + controller: _passwordController, + decoration: const InputDecoration(hintText: 'Password'), + ), + const SizedBox(height: 16), + ElevatedButton( + onPressed: () async { + final as = AuthService(); + // TODO: update to get from form fields + await as.signIn('hady@gmail.com', 'password'); + }, + child: const Text('Sign In'), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index 929c938..947c2aa 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -1,11 +1,36 @@ -// ignore_for_file: non_constant_identifier_names, unused_element +// ignore_for_file: non_constant_identifier_names, unused_element, avoid_print import 'dart:convert'; // for the utf8.encode method import 'dart:math'; import 'package:crypto/crypto.dart'; import 'package:convert/convert.dart'; - -class AuthService {} +import 'package:http/http.dart' as http; + +// TODO: get authority from environment variables +class AuthService { + //Future register() {} + + Future signIn(String email, String password) async { + try { + // initiate auth session + final queryParams = { + 'email': email, + }; + //final uri = Uri.http('localhost:3000', '/api/auth/init', queryParams); + final uri = Uri.parse('http://localhost:3000/api/auth/init?email=$email'); + print(uri.toString()); + final response = await http.get(uri, headers: { + 'x-device-id': '1234', + }); + print('init auht response status: ${response.statusCode}'); + final authSessionBody = jsonDecode(response.body) as Map; + + print('body: $authSessionBody'); + } catch (e) { + print('Error signing in: $e'); + } + } +} /// Client SRP methods class SRP { @@ -121,17 +146,23 @@ class SRP { return hashToBigInt(concatString); } - static Map respondToAuthChallenge( + static ({BigInt A, BigInt M, BigInt K}) respondToAuthChallenge( String email, String password, String salt, BigInt a, BigInt B) { // Step 1: derive public key final A = derivePublicKey(a); + print('A: 0x${A.toRadixString(16)}'); + // Step 2: calculate u = H(A | B) final u = calcluateU(A, B); + print('u: 0x${u.toRadixString(16)}'); + // Step 3: calculate x = H(salt | H(email | ':' | password)) final x = calculateX(email, password, salt); + print('x: 0x${x.toRadixString(16)}'); + // Step 4: calculate S = (B - k * g^x)^(a + u * x) % N final gx = g.modPow(x, N); final kgx = (k * gx) % N; @@ -141,21 +172,27 @@ class SRP { final exponent = (a + (u * x)) % (N - BigInt.one); + print('base: 0x${base.toRadixString(16)}'); + print('exponent: 0x${exponent.toRadixString(16)}'); + final S = base.modPow(exponent, N); + print('S: 0x${S.toRadixString(16)}'); // Step 5: calculate K = H(S) final K = hashToBigInt(S.toRadixString(16)); + print('K: 0x${K.toRadixString(16)}'); // Step 6: calculate client proof M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) final M = calculateClientProof(email, salt, A, B, K); + print('M: 0x${M.toRadixString(16)}'); // TEMP // TODO: update with proper typing - return { - 'A': A, - 'M': M, - 'K': K, - }; + return ( + A: A, + M: M, + K: K, + ); } } From 781da38dd4843ba337bef581c96f2bdb0ed8e969 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Sun, 2 Mar 2025 22:45:01 +0400 Subject: [PATCH 15/25] WIP SRP working between client and server --- api/src/controllers/auth.ts | 182 +++++++++++----------- api/src/routes/auth.ts | 10 +- api/src/schemas/auth/auth.ts | 46 ++++-- api/src/schemas/obj-id.ts | 11 +- api/src/services/auth/auth.ts | 188 ++++++++++++----------- api/src/services/db/repositories/user.ts | 69 ++++++++- api/src/util.ts | 2 + app/lib/screens/auth/sign_in.dart | 10 ++ app/lib/services/auth.dart | 140 +++++++++++++++-- 9 files changed, 443 insertions(+), 215 deletions(-) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 49d1cba..9124968 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -1,10 +1,17 @@ import { Response } from 'express'; -import { AuthenticatedRequest } from '../schemas/auth/auth'; +import { + AuthenticatedRequest, + AuthSessionError, + IncorrectPasswordError, +} from '../schemas/auth/auth'; import { TokenService } from '../services/auth/token'; import { tryAPIController, validateSchema } from '../util'; import { + Email, + emailSchema, InvalidUserError, InvalidUserType, + loginDataSchema, registerDataSchema, } from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; @@ -87,6 +94,7 @@ export class AuthController { // get data from body const data = validateSchema(res, registerDataSchema, req.body); if (!data) { + console.log('data invalid'); return; } @@ -110,92 +118,94 @@ export class AuthController { ); } - //public static async register(req: AuthenticatedRequest, res: Response) { - // try { - // // check if they are already logged in - // if (req.user) { - // console.log(req.user); - // - // res.status(400).send({ error: 'Already logged in' }); - // return; - // } - // - // const data = validateSchema(res, registerDataSchema, req.body); - // if (!data) { - // return; - // } - // - // console.log('register data:', data); - // - // const as = new AuthService(); - // const { userId, formattedKey } = await as.initUserSRP(data); - // - // res.status(201).send({ userId, formattedKey }); - // return; - // } catch (e) { - // if ( - // e instanceof InvalidUserError && - // e.type === InvalidUserType.ALREADY_EXISTS - // ) { - // // don't tell the client the user doesn't already exist - // res.status(400).send({ error: 'Invalid request' }); - // return; - // } - // - // console.error(e); - // res.status(500).send('Internal Server Error'); - // return; - // } - //} + public static initateAuthSession(req: AuthenticatedRequest, res: Response) { + tryAPIController( + res, + async () => { + // check if user is already signed in + if (req.user) { + res.status(400).send({ error: 'Already logged in' }); + return; + } - //public static async initiateAuthSession( - // req: AuthenticatedRequest, - // res: Response, - //) { - // try { - // // check if they are already logged in - // if (req.user) { - // console.log(req.user); - // - // res.status(400).send({ error: 'Already logged in' }); - // return; - // } - // - // const email: Email | undefined = validateSchema( - // res, - // emailSchema, - // req.query.email, - // ); - // - // if (!email) { - // return; - // } - // - // const as = new AuthService(); - // - // try { - // const { salt, B } = await as.initAuthSession(email); - // - // console.log('salt:', salt); - // console.log('B:', B); - // - // res.status(200).send({ salt, B }); - // } catch (e) { - // if (e instanceof InvalidUserError) { - // // don't tell the client the user doesn't exist - // res.status(400).send({ error: 'Invalid request' }); - // return; - // } else { - // throw e; - // } - // } - // } catch (e) { - // console.error(e); - // - // res.status(500).send({ error: 'Internal server error' }); - // return; - // } - //} + // get email from query + const email: Email | undefined = validateSchema( + res, + emailSchema, + req.query.email, + ); + + if (!email) { + return; + } + + const as = new AuthService(); + + // initiate auth session + const { salt, B } = await as.initiateAuthSession(email); + res.status(201).send({ salt, B: `0x${B.toString(16)}` }); + return; + }, + (e) => { + if (e instanceof InvalidUserError) { + // don't tell the client the user doesn't exist, return a generic + // error + res.status(400).send({ error: 'Invalid request' }); + return true; + } + return false; + }, + ); + } + + public static login(req: AuthenticatedRequest, res: Response) { + tryAPIController( + res, + async () => { + // check if user is already signed in + if (req.user) { + res.status(400).send({ error: 'Already logged in' }); + return; + } + + // validate the body + const data = validateSchema(res, loginDataSchema, req.body); + if (!data) { + return; + } + + // validate the login credentials + const as = new AuthService(); + const Ms = await as.validateLoginCredentials( + data.email, + data.A, + data.Mc, + ); + + // login credentials are correct + // + // TODO: generate mfa token to send back to user + + res.status(200).send({ Ms: `0x${Ms.toString(16)}` }); + }, + (err) => { + if (err instanceof InvalidUserError) { + console.log('invalid user error'); + res.status(400).send({ error: 'Invalid request' }); + return true; + } else if (err instanceof IncorrectPasswordError) { + console.log('incorrect password'); + res.status(400).send({ error: 'Incorrect email or password' }); + return true; + } else if (err instanceof AuthSessionError) { + console.log('auth session does not exist'); + res.status(404).send({ error: 'Auth session does not exist' }); + return true; + } + return false; + }, + ); + } //public static async login(req: AuthenticatedRequest, res: Response) { // try { diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index 1110d01..9a2d823 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -7,11 +7,11 @@ authRouter.use(requireDeviceId); authRouter.post('/register', (req, res) => AuthController.register(req, res)); -//authRouter.post('/init', (req, res) => -// AuthController.initiateAuthSession(req, res), -//); -// -//authRouter.post('/login', (req, res) => AuthController.login(req, res)); +authRouter.post('/init', (req, res) => + AuthController.initateAuthSession(req, res), +); + +authRouter.post('/login', (req, res) => AuthController.login(req, res)); //authRouter.post('/mfa/confirm', (req, res) => // AuthController.confirmMFA(req, res), diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index dd5faa9..42105cb 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -1,6 +1,8 @@ import { Request } from 'express'; import { z } from 'zod'; import { AccessTokenUser } from './tokens'; +import { objectIdOrStringSchema, objectIdStringSchema } from '../obj-id'; +import { emailSchema } from './user'; export interface AuthenticatedRequest extends Request { user?: AccessTokenUser | undefined; @@ -31,30 +33,40 @@ const bigIntTransormed = z .transform((val) => (typeof val === 'string' ? BigInt(val) : val)); export const srpSessionSchema = z.object({ - /** the session id */ - sessionId: z.string(), + /** The user's id */ + userId: objectIdOrStringSchema, + /** The user's email */ + email: emailSchema, /** The user's salt */ salt: z.string(), - /** The user's verifier */ - verifier: z.string(), - // TODO: add bigint validation in schema - /* Server private key */ + /** the user's verifier */ + verifier: bigIntTransormed, + /** Server private key */ b: bigIntTransormed, - /* Server public key */ + /** Server public key */ B: bigIntTransormed, - /* Client public key */ - A: bigIntTransormed.optional(), }); export type SRPSession = z.infer; -export const srpSessionJSONSchema = srpSessionSchema.extend({ +export const SRPJSONSessionSchema = z.object({ + /** the user's id */ + userId: objectIdStringSchema, + /** The user's email */ + email: emailSchema, + /** The datetime the session was created */ + createdAt: z.coerce.date().transform((val) => val.toISOString()), + /** The user's salt */ + salt: z.string(), + /** the user's verifier */ + verifier: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), + /** Server private key */ b: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), + /** Server public key */ B: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), - A: bigIntTransormed.transform((val) => `0x${val.toString(16)}`).optional(), - createdAt: z.coerce.date(), }); -export type SRPJSONSession = z.infer; + +export type SRPJSONSession = z.infer; /* Error types */ @@ -74,6 +86,14 @@ export class MFAError extends Error { } } +export class AuthSessionError extends Error { + constructor() { + super('Authentication Session Error'); + this.name = 'AuthSessionError'; + Object.setPrototypeOf(this, AuthSessionError.prototype); + } +} + export class IncorrectPasswordError extends Error { constructor() { super('Incorrect Password'); diff --git a/api/src/schemas/obj-id.ts b/api/src/schemas/obj-id.ts index f269401..00d2360 100644 --- a/api/src/schemas/obj-id.ts +++ b/api/src/schemas/obj-id.ts @@ -1,11 +1,12 @@ import { ObjectId } from 'mongodb'; import { z } from 'zod'; -export const objectIdStringSchema = z.coerce - .string() - .refine((val) => ObjectId.isValid(val), { - message: 'Invalid ObjectID', - }); +export const objectIdStringSchema = z + .union([ + z.coerce.string(), + z.instanceof(ObjectId).transform((val) => val.toString()), + ]) + .refine((val) => ObjectId.isValid(val), { message: 'Invalid ObjectID' }); export type ObjectIdString = z.infer; diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index dcd5517..e27a85f 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -8,6 +8,8 @@ import { srpSessionSchema, SRPSession, MFAFormattedKey, + SRPJSONSession, + AuthSessionError, } from '../../schemas/auth/auth'; import { Email, @@ -57,77 +59,112 @@ export class AuthService { return { userId, formattedKey }; } - ///** - // * Register the user with the system and initiate their authentication - // * information - // * @param data - The user's data - // * @returns The user's id and their MFA formatted key - // * @throws InvalidUserError if the user already exists - // */ - //public async initUserSRP(data: RegisterData) { - // // check user doesn't already exists - // const userExists = await this.db.userRepository.userExistsEmail(data.email); - // if (userExists) { - // throw new InvalidUserError({ type: InvalidUserType.ALREADY_EXISTS }); - // } - // - // const ms = new MFAService(); - // const formattedKey = ms.generateMFAFormattedKey(); - // const userId = await this.db.userRepository.createUser(data, formattedKey); - // - // return { userId, formattedKey }; - //} + /** + * Initialises an auth session for the user. + * @param email - The user's email + */ + public async initiateAuthSession( + email: Email, + ): Promise<{ salt: string; B: bigint }> { + // get the user's SRP credentiails + const { + userId, + salt, + verifier: verifierString, + } = await this.db.userRepository.getUserSRPCredentials(email); - //public async getUserAuth(email: Email) { - //} + console.log(''); + console.log('got user salt and verifier'); + console.log('salt:', salt); + console.log('verifier:', verifierString); + console.log(''); - ///** - // * Initialises an SRP auth session for the user - // * @param email - The user's email - // * @returns The user's session id, salt, and the public key generated by the - // * server (B) - // * @throws An error if the user does not exist - // * @throws An error if the serer failed to create the session - // */ - //public async initAuthSession(email: Email): Promise<{ + // generate the server keys + const verifier = BigInt(verifierString); + const { b, B } = SRP.generateServerKeys(verifier); + console.log('server keys generated'); + console.log('b:', b.toString(16)); + console.log('B:', B.toString(16)); + console.log(''); + + const session: SRPSession = { + userId: userId.toString(), + email, + salt, + verifier, + B, + b, + }; + + const success = await this.db.srpSessionRepository.storeSRPSession( + srpSessionSchema.parse(session), + ); + + if (!success) { + throw new Error('Failed to store SRP session'); + } + + return { salt, B }; + } + + /** + * Verifies the client's proof is correct and generates a corresponding server + * proof + * @param email - The user's email + * @param A - The client's public key + * @param Mc - The client's proof + * @returns The server's proof + * @throws An {@link AuthSessionError} if the session is expired or does not exist + * @throws An {@link IncorrectPasswordError} if the client's proof is incorrect + */ + public async validateLoginCredentials( + email: Email, + A: bigint, + Mc: bigint, + ): Promise { + // get the auth session + const jsonSession: SRPJSONSession | undefined = + await this.db.srpSessionRepository.getSRPSession(email); + + if (!jsonSession) { + throw new AuthSessionError(); + } + const session: SRPSession = srpSessionSchema.parse(jsonSession); + + // check the client proof is correct + const serverProof = SRP.verifyClientProof({ + email, + salt: session.salt, + verifier: session.verifier, + A, + b: session.b, + B: session.B, + Mc, + }); + + return serverProof; + } + + //public async login(data: { + // email: string; // salt: string; + // verifier: bigint; + // A: bigint; + // b: bigint; // B: bigint; - //}> { - // const { salt, verifier } = - // await this.db.userRepository.getUserSRPCredentials(email); - // //console.log('got salt and verifier'); - // console.log('salt:', salt); - // console.log('verifier:', verifier); - // - // console.log(''); - // - // console.log('generating server keys'); - // const { b, B } = SRP.generateServerKeys(BigInt(verifier)); - // console.log('b:', b.toString(16)); - // console.log('B:', B.toString(16)); - // console.log(''); - // - // // store session - // const session = srpSessionSchema.parse({ - // sessionId: email, - // salt, - // verifier, - // b, - // B, - // }); + // Mc: bigint; + //}) { + // const serverProof = SRP.verifyClientProof(data); // - // console.log('session being passed to db service:', session); - // console.log(''); + // // method didn't throw, client proof correct // - // // use email as session id to only have one session id per user - // await this.db.srpSessionRepository.storeSRPAuthSession(email, session); - // - // console.log('session stored'); - // - // return { - // salt, - // B, + // const user = await this.db.userRepository.getUserDocByEmail(data.email); + // const mfa: MFA = { + // confirmed: user.mfaConfirmed, + // formattedKey: user.mfaFormattedKey, // }; + // + // return { user: userWithIdSchema.parse(user), mfa, Ms: serverProof }; //} ///** @@ -204,29 +241,6 @@ export class AuthService { return await this.db.userRepository.getUserById(userId); } - //public async login(data: LoginData): Promise<{ user: UserWithId; mfa: MFA }> { - public async login(data: { - email: string; - salt: string; - verifier: bigint; - A: bigint; - b: bigint; - B: bigint; - Mc: bigint; - }) { - const serverProof = SRP.verifyClientProof(data); - - // method didn't throw, client proof correct - - const user = await this.db.userRepository.getUserDocByEmail(data.email); - const mfa: MFA = { - confirmed: user.mfaConfirmed, - formattedKey: user.mfaFormattedKey, - }; - - return { user: userWithIdSchema.parse(user), mfa, Ms: serverProof }; - } - /** * Verify the MFA code entered by the user is correct * @param userId - The id of the user diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 4d700e2..55915a3 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -16,12 +16,12 @@ import { MFA, MFAFormattedKey, SRPJSONSession, + SRPJSONSessionSchema, SRPSession, - srpSessionJSONSchema, - srpSessionSchema, } from '../../../schemas/auth/auth'; export interface UserDoc extends User { + _id?: ObjectId; /** The user's mfa formatted key */ mfaFormattedKey: string; /** Whether the user has confirmed correctly setting up MFA */ @@ -80,17 +80,17 @@ export class UserRepository extends DatabaseRepository { */ public async getUserSRPCredentials( email: Email, - ): Promise<{ salt: string; verifier: string }> { + ): Promise<{ userId: ObjectId; salt: string; verifier: string }> { const result = await this.collection.findOne( { email, }, - { projection: { salt: 1, verifier: 1 } }, + { projection: { _id: 1, salt: 1, verifier: 1 } }, ); if (!result) { throw new InvalidUserError({ type: InvalidUserType.DOES_NOT_EXIST }); } - return { salt: result.salt, verifier: result.verifier }; + return { userId: result._id, salt: result.salt, verifier: result.verifier }; } /** @@ -242,9 +242,8 @@ export class UserRepository extends DatabaseRepository { } } -interface SRPSessionDoc extends SRPJSONSession { - _id?: ObjectId; -} +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +interface SRPSessionDoc extends SRPJSONSession {} const SRP_SESSION_COLLECTION_NAME = 'srp-sessions'; const SRP_SESSION_KEY_PREFIX = 'srp-auth-session'; @@ -313,6 +312,60 @@ export class SRPSessionRepository extends DatabaseRepository { //]); } + /** + * Store's an auth session in the database. The session will expire after a + * set time. + * @param session - The session to store + * @returns A boolean indicating if the session was stored successfully + */ + public async storeSRPSession(session: SRPSession) { + // convert to json friendly format + const jsonSession = SRPJSONSessionSchema.parse({ + ...session, + createdAt: new Date(), + }); + + console.log('session being stored in db:', jsonSession); + + // TODO: store session in redis + + // store session in db as a backup + const result = await this.collection.updateOne( + { userId: session.userId.toString() }, + { + $set: jsonSession, + }, + { upsert: true }, + ); + + console.log('result:', result); + + return ( + result.acknowledged && + result.matchedCount + result.modifiedCount + result.upsertedCount > 0 + ); + } + + /** + * Get a user's SRP session if it exists + * @param userId - The user's id + * @returns The auth session if it exists. If it doesn't undefined will be + * returned + */ + public async getSRPSession( + email: Email, + ): Promise { + // TODO: check redis first + + const session = await this.collection.findOne({ + email: email, + }); + if (!session) { + return; + } + return SRPJSONSessionSchema.parse(session); + } + //public async storeSRPAuthSession(sessionId: string, session: SRPSession) { // // convert bigints to strings // const sessionJSON = srpSessionJSONSchema.parse({ diff --git a/api/src/util.ts b/api/src/util.ts index afb38f3..869f90b 100644 --- a/api/src/util.ts +++ b/api/src/util.ts @@ -15,6 +15,8 @@ export function validateSchema( // eslint-disable-next-line @typescript-eslint/no-unsafe-return return schema.parse(data); } catch (_) { + console.log(_); + res.status(400).send('Invalid Request'); return undefined; } diff --git a/app/lib/screens/auth/sign_in.dart b/app/lib/screens/auth/sign_in.dart index 0860fd8..c5d5186 100644 --- a/app/lib/screens/auth/sign_in.dart +++ b/app/lib/screens/auth/sign_in.dart @@ -39,6 +39,16 @@ class _SignInScreenState extends State { decoration: const InputDecoration(hintText: 'Password'), ), const SizedBox(height: 16), + ElevatedButton( + onPressed: () async { + final as = AuthService(); + final result = + await as.register('hady@gmail.com', 'password'); + debugPrint('result: $result'); + }, + child: const Text('Register'), + ), + const SizedBox(height: 16), ElevatedButton( onPressed: () async { final as = AuthService(); diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index 947c2aa..83e2b3a 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -6,26 +6,144 @@ import 'package:crypto/crypto.dart'; import 'package:convert/convert.dart'; import 'package:http/http.dart' as http; -// TODO: get authority from environment variables +// TODO: get uri from environment variables +// TODO: get device id dynamically class AuthService { - //Future register() {} - - Future signIn(String email, String password) async { + Future<({String userId, String mfaFormattedKey})?> register( + String email, String password, + {DateTime? dob, String? sex}) async { try { - // initiate auth session - final queryParams = { + final salt = SRP.generateSalt(); + final verifier = SRP.deriveVerifier(email, password, salt); + final body = { 'email': email, + 'salt': salt, + 'verifier': '0x${verifier.toRadixString(16)}', }; - //final uri = Uri.http('localhost:3000', '/api/auth/init', queryParams); + if (dob != null) { + body['dob'] = dob.toIso8601String(); + } + if (sex != null) { + body['sex'] = sex; + } + final uri = Uri.parse('http://localhost:3000/api/auth/register'); + final response = await http.post(uri, body: jsonEncode(body), headers: { + 'Content-Type': 'application/json', + 'x-device-id': '1234', + }); + + print('register response status: ${response.statusCode}'); + + if (response.statusCode >= 200 && response.statusCode < 300) { + print('Registration successful'); + // get json body + final responseBody = jsonDecode(response.body) as Map; + try { + print('body: $responseBody'); + final userId = responseBody['userId'] as String; + final mfaFormattedKey = responseBody['formattedKey'] as String; + return (userId: userId, mfaFormattedKey: mfaFormattedKey); + } catch (e) { + print('Error getting body: $e'); + } + } else { + if (response.body.isNotEmpty) { + final error = jsonDecode(response.body) as Map; + print('Error registering: ${error['message'] ?? error['error']}'); + } + } + } catch (e) { + print('Error registering: $e'); + } + return null; + } + + /// Initiates an authentication session for the user with the given [email]. + Future<({String salt, BigInt B})?> _initiateAuthSession(String email) async { + try { + // initiate auth session final uri = Uri.parse('http://localhost:3000/api/auth/init?email=$email'); print(uri.toString()); - final response = await http.get(uri, headers: { + final response = await http.post(uri, headers: { + 'x-device-id': '1234', + }); + print('init auth response status: ${response.statusCode}'); + if (response.statusCode >= 200 && response.statusCode < 300) { + // get body + final responseBody = jsonDecode(response.body) as Map; + print('response body: $responseBody'); + try { + final salt = responseBody['salt'] as String; + final BString = responseBody['B'] as String; + + // convert B to BigInt + final B = BigInt.parse(BString.substring(2), radix: 16); + + return (salt: salt, B: B); + } catch (e) { + print('Error getting body: $e'); + } + } else { + // error + if (response.body.isNotEmpty) { + final error = jsonDecode(response.body) as Map; + print('Error registering: ${error['message'] ?? error['error']}'); + } + } + } catch (e) { + print('Error signing in: $e'); + } + return null; + } + + /// Signs the user in with the given [email] and [password]. The user must + /// complete the MFA challenge after this to complete the sign in process. + Future signIn(String email, String password) async { + try { + // create an auth session + final session = await _initiateAuthSession(email); + if (session == null) { + print('Error initiating auth session'); + return; + } + print('session: $session'); + + // generate private key + final a = SRP.generatePrivateKey(); + final proof = SRP.respondToAuthChallenge( + email, password, session.salt, a, session.B); + final body = { + 'email': email, + 'A': '0x${proof.A.toRadixString(16)}', + 'Mc': '0x${proof.M.toRadixString(16)}', + }; + + final uri = Uri.parse('http://localhost:3000/api/auth/login'); + final response = await http.post(uri, body: jsonEncode(body), headers: { + 'Content-Type': 'application/json', 'x-device-id': '1234', }); - print('init auht response status: ${response.statusCode}'); - final authSessionBody = jsonDecode(response.body) as Map; - print('body: $authSessionBody'); + print('login response status: ${response.statusCode}'); + if (response.statusCode >= 200 && response.statusCode < 300) { + // get body + final responseBody = jsonDecode(response.body) as Map; + print('response body: $responseBody'); + try { + final MsString = responseBody['Ms'] as String; + print('MsString: $MsString'); + final Ms = BigInt.parse(MsString.substring(2), radix: 16); + print('Ms: $Ms'); + } catch (e) { + print('Error getting body: $e'); + } + } else { + // error + if (response.body.isNotEmpty) { + final error = jsonDecode(response.body) as Map; + print('Error registering: ${error['message'] ?? error['error']}'); + } + } } catch (e) { print('Error signing in: $e'); } From 0850e14190e974c31a05d400b6ff9db016753f16 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Mon, 3 Mar 2025 00:13:31 +0400 Subject: [PATCH 16/25] Completed SRP server side, and added back redis functionality as well as configuring the user, auth session, and token db collections --- api/package.json | 2 + api/src/configure-db.ts | 19 + api/src/controllers/auth.ts | 486 ++++++++++------------ api/src/index.ts | 105 +---- api/src/routes/auth.ts | 16 +- api/src/schemas/auth/auth.ts | 14 + api/src/services/auth/auth.ts | 190 ++------- api/src/services/db/db.ts | 12 + api/src/services/db/repo.ts | 2 + api/src/services/db/repositories/token.ts | 143 ++++++- api/src/services/db/repositories/user.ts | 294 ++++++------- app/lib/main.dart | 1 - app/lib/screens/auth/sign_in.dart | 1 - app/lib/services/auth.dart | 51 +-- 14 files changed, 613 insertions(+), 723 deletions(-) create mode 100644 api/src/configure-db.ts diff --git a/api/package.json b/api/package.json index 96a5129..bf28e59 100644 --- a/api/package.json +++ b/api/package.json @@ -6,6 +6,8 @@ "start": "node --no-assertions dist/index.js", "build": "tsc", "dev": "nodemon --exec ts-node src/index.ts", + "dev:configure-db": "ts-node src/configure-db.ts", + "configure-db": "node --no-assertions dist/configure-db.js", "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", diff --git a/api/src/configure-db.ts b/api/src/configure-db.ts new file mode 100644 index 0000000..0a78bb9 --- /dev/null +++ b/api/src/configure-db.ts @@ -0,0 +1,19 @@ +import dotenv from 'dotenv'; +// eslint-disable-next-line no-restricted-imports +import { DatabaseService } from './services/db/db'; +dotenv.config(); + +async function run() { + const db = new DatabaseService(); + + await db.configureCollections(); +} + +run() + .then(() => { + console.log('Database collections configured'); + process.exit(0); + }) + .catch((e) => { + throw e; + }); diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 9124968..1113362 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -3,6 +3,10 @@ import { AuthenticatedRequest, AuthSessionError, IncorrectPasswordError, + MFACode, + mfaCodeSchema, + MFAError, + MFAErrorType, } from '../schemas/auth/auth'; import { TokenService } from '../services/auth/token'; import { tryAPIController, validateSchema } from '../util'; @@ -15,6 +19,8 @@ import { registerDataSchema, } from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; +import { MFAService } from '../services/auth/mfa'; +import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; const MFA_TOKEN_COOKIE_NAME = 'mfa-token'; const ACCESS_TOKEN_COOKIE_NAME = 'access-token'; @@ -176,17 +182,45 @@ export class AuthController { // validate the login credentials const as = new AuthService(); - const Ms = await as.validateLoginCredentials( + + // get the auth session + const session = await as.getAuthSession(data.email); + + const Ms = as.validateLoginCredentials( data.email, data.A, data.Mc, + session, ); // login credentials are correct - // - // TODO: generate mfa token to send back to user + // generate mfa token to send back to user + const ts = new TokenService(); + const mfaToken = await ts.createMFAToken( + session.userId.toString(), + req.deviceId!, + session.mfaConfirmed ? undefined : session.mfaFormattedKey, + ); + + this.writeMFACookie(res, mfaToken); + + // don't wait for this as it will unnecessarily delay the response + as.deleteAuthSession(data.email).catch((e) => + console.error('Error deleting auth sesssion:', e), + ); - res.status(200).send({ Ms: `0x${Ms.toString(16)}` }); + if (session.mfaConfirmed) { + res.status(200).send({ Ms: `0x${Ms.toString(16)}` }); + return; + } else { + const mfa = new MFAService(); + const mfaQRUri = mfa.generateMFAUri( + session.mfaFormattedKey, + data.email, + ); + res.status(200).send({ Ms: `0x${Ms.toString(16)}`, mfaQRUri }); + return; + } }, (err) => { if (err instanceof InvalidUserError) { @@ -207,261 +241,191 @@ export class AuthController { ); } - //public static async login(req: AuthenticatedRequest, res: Response) { - // try { - // // check if they are already logged in - // if (req.user) { - // res.status(400).send({ error: 'Already logged in' }); - // return; - // } - // - // const data = validateSchema(res, loginDataSchema, req.body); - // - // if (!data) { - // return; - // } - // - // console.log('data:', data); - // - // const as = new AuthService(); - // - // // get auth session - // const session = await as.getAuthSession(data.email); - // - // // check it exists - // if (!session) { - // res.status(404).send({ error: 'Auth session does not exist' }); - // return; - // } - // - // try { - // const { user, mfa, Ms } = await as.login({ - // ...data, - // ...session, - // verifier: BigInt(session.verifier), - // }); - // - // // generate mfa token to send back to user - // const ts = new TokenService(); - // const mfaToken = await ts.createMFAToken( - // user._id.toString(), - // req.deviceId!, - // mfa.confirmed ? undefined : mfa.formattedKey, - // ); - // - // this.writeMFACookie(res, mfaToken); - // - // if (mfa.confirmed) { - // res.status(200).send({ Ms }); - // } else { - // const ms = new MFAService(); - // const mfaQRUri = ms.generateMFAUri(mfa.formattedKey, user.email); - // res - // .status(200) - // .send({ Ms, formattedKey: mfa.formattedKey, mfaQRUri }); - // } - // } catch (e) { - // if ( - // e instanceof InvalidUserError || - // e instanceof IncorrectPasswordError - // ) { - // res.status(400).send({ error: 'Incorrect email or password' }); - // return; - // } else { - // throw e; - // } - // } - // } catch (e) { - // console.error(e); - // res.status(500).send({ error: 'Internal Server Error' }); - // } - //} - - //public static async confirmMFA(req: AuthenticatedRequest, res: Response) { - // try { - // const deviceId = req.deviceId!; - // - // // get mfa token - // const mfaToken = req.cookies['mfa-token'] as string | undefined; - // console.log(req.cookies); - // - // if (!mfaToken) { - // res.status(400).send({ error: 'MFA token not found' }); - // return; - // } - // - // let code: MFACode; - // try { - // // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - // code = mfaCodeSchema.parse(req.body.code); - // } catch (_) { - // res.status(400).send({ error: 'Invalid code' }); - // return; - // } - // - // // verify mfa token - // const ts = new TokenService(); - // let mfaPayload: MFATokenPayload; - // try { - // mfaPayload = await ts.verifyMFAToken(mfaToken); - // console.log('mfaPayload:', mfaPayload); - // } catch (e) { - // if (e instanceof InvalidTokenError) { - // res.status(401).send({ error: 'Invalid MFA token' }); - // return; - // } else { - // console.error(e); - // res.status(500).send({ error: 'Internal Server Error' }); - // return; - // } - // } - // - // if (deviceId !== mfaPayload.deviceId) { - // res.status(400).send({ error: 'Invalid device id' }); - // return; - // } - // - // const as = new AuthService(); - // try { - // await as.confirmUserMFA(mfaPayload.userId, code); - // const { accessToken, refreshToken, idToken } = - // await ts.generateAllTokens(mfaPayload.userId, deviceId); - // this.deleteMFACookie(res); - // this.writeAuthCookies(res, accessToken, refreshToken, idToken); - // res.status(200).send(); - // return; - // } catch (e) { - // // mfa is valid, create a new one since the old one is now blacklisted - // const newMfaToken = await ts.createMFAToken( - // mfaPayload.userId, - // mfaPayload.deviceId, - // mfaPayload.formattedKey, - // ); - // this.writeMFACookie(res, newMfaToken); - // if (e instanceof MFAError) { - // switch (e.type) { - // case MFAErrorType.INCORRECT_CODE: - // res.status(400).send({ error: 'Incorrect MFA Code' }); - // break; - // case MFAErrorType.MFA_ALREADY_CONFIRMED: - // res.status(400).send({ error: 'MFA already confirmed' }); - // break; - // case MFAErrorType.MFA_NOT_CONFIRMED: - // // this should never happen - // console.error('mfa not confirmed in confirm mfa'); - // res.status(500).send({ error: 'Internal Server Error' }); - // break; - // } - // } else { - // console.error(e); - // res - // .status(400) - // // user does not exist but don't tell client that - // .send({ error: 'Invalid request' }); - // } - // } - // return; - // } catch (e) { - // console.error(e); - // res.status(500).send({ error: 'Internal Server Error' }); - // } - //} - - //public static async verifyMFA(req: AuthenticatedRequest, res: Response) { - // try { - // // get mfa token - // const mfaToken = req.cookies['mfa-token'] as string | undefined; - // console.log(req.cookies); - // - // if (!mfaToken) { - // res.status(400).send({ error: 'MFA token not found' }); - // return; - // } - // - // let code: MFACode; - // try { - // // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - // code = mfaCodeSchema.parse(req.body.code); - // } catch (_) { - // res.status(400).send({ error: 'Invalid code' }); - // return; - // } - // - // // verify mfa token - // const ts = new TokenService(); - // let mfaPayload: MFATokenPayload; - // try { - // mfaPayload = await ts.verifyMFAToken(mfaToken); - // console.log('mfaPayload:', mfaPayload); - // } catch (e) { - // if (e instanceof InvalidTokenError) { - // res.status(401).send({ error: 'Invalid MFA token' }); - // return; - // } else { - // console.error(e); - // res.status(500).send({ error: 'Internal Server Error' }); - // return; - // } - // } - // - // if (req.deviceId !== mfaPayload.deviceId) { - // res.status(400).send({ error: 'Invalid device id' }); - // return; - // } - // - // const as = new AuthService(); - // try { - // const result = await as.verifyMFA(mfaPayload.userId, code); - // if (!result) { - // // mfa is valid, create a new one since the old one is now blacklisted - // const newMfaToken = await ts.createMFAToken( - // mfaPayload.userId, - // mfaPayload.deviceId, - // mfaPayload.formattedKey, - // ); - // this.writeMFACookie(res, newMfaToken); - // res.status(400).send({ error: 'Incorrect MFA Code' }); - // return; - // } - // - // // mfa correct, generate new tokens - // const { accessToken, refreshToken, idToken } = - // await ts.generateAllTokens(mfaPayload.userId, mfaPayload.deviceId); - // this.writeAuthCookies(res, accessToken, refreshToken, idToken); - // this.deleteMFACookie(res); - // res.status(200).send(); - // return; - // } catch (e) { - // if (e instanceof MFAError) { - // // mfa is valid, create a new one since the old one is now blacklisted - // const newMfaToken = await ts.createMFAToken( - // mfaPayload.userId, - // mfaPayload.deviceId, - // mfaPayload.formattedKey, - // ); - // this.writeMFACookie(res, newMfaToken); - // switch (e.type) { - // case MFAErrorType.INCORRECT_CODE: - // res.status(400).send({ error: 'Incorrect MFA Code' }); - // break; - // case MFAErrorType.MFA_ALREADY_CONFIRMED: - // // this should never happen - // console.error('mfa already confirmed in verify mfa'); - // res.status(500).send({ error: 'Internal Server Error' }); - // break; - // case MFAErrorType.MFA_NOT_CONFIRMED: - // res.status(400).send({ error: 'MFA not confirmed' }); - // break; - // } - // } else { - // console.error(e); - // res.status(500).send({ error: 'Internal Server Error' }); - // } - // return; - // } - // } catch (e) { - // console.error(e); - // res.status(500).send({ error: 'Internal server error' }); - // } - //} + public static async confirmMFA(req: AuthenticatedRequest, res: Response) { + try { + const deviceId = req.deviceId!; + + // get mfa token + const mfaToken = req.cookies['mfa-token'] as string | undefined; + console.log(req.cookies); + + if (!mfaToken) { + res.status(400).send({ error: 'MFA token not found' }); + return; + } + + let code: MFACode; + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + code = mfaCodeSchema.parse(req.body.code); + } catch (_) { + res.status(400).send({ error: 'Invalid code' }); + return; + } + + // verify mfa token + const ts = new TokenService(); + let mfaPayload: MFATokenPayload; + try { + mfaPayload = await ts.verifyMFAToken(mfaToken); + console.log('mfaPayload:', mfaPayload); + } catch (e) { + if (e instanceof InvalidTokenError) { + res.status(401).send({ error: 'Invalid MFA token' }); + return; + } else { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + return; + } + } + + if (deviceId !== mfaPayload.deviceId) { + res.status(400).send({ error: 'Invalid device id' }); + return; + } + + const as = new AuthService(); + try { + await as.confirmUserMFA(mfaPayload.userId, code); + const { accessToken, refreshToken, idToken } = + await ts.generateAllTokens(mfaPayload.userId, deviceId); + this.deleteMFACookie(res); + this.writeAuthCookies(res, accessToken, refreshToken, idToken); + res.status(200).send(); + return; + } catch (e) { + // mfa is valid, create a new one since the old one is now blacklisted + const newMfaToken = await ts.createMFAToken( + mfaPayload.userId, + mfaPayload.deviceId, + mfaPayload.formattedKey, + ); + this.writeMFACookie(res, newMfaToken); + if (e instanceof MFAError) { + switch (e.type) { + case MFAErrorType.INCORRECT_CODE: + res.status(400).send({ error: 'Incorrect MFA Code' }); + break; + case MFAErrorType.MFA_ALREADY_CONFIRMED: + res.status(400).send({ error: 'MFA already confirmed' }); + break; + case MFAErrorType.MFA_NOT_CONFIRMED: + // this should never happen + console.error('mfa not confirmed in confirm mfa'); + res.status(500).send({ error: 'Internal Server Error' }); + break; + } + } else { + console.error(e); + res + .status(400) + // user does not exist but don't tell client that + .send({ error: 'Invalid request' }); + } + } + return; + } catch (e) { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + } + } + + public static async verifyMFA(req: AuthenticatedRequest, res: Response) { + try { + // get mfa token + const mfaToken = req.cookies['mfa-token'] as string | undefined; + console.log(req.cookies); + + if (!mfaToken) { + res.status(400).send({ error: 'MFA token not found' }); + return; + } + + let code: MFACode; + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + code = mfaCodeSchema.parse(req.body.code); + } catch (_) { + res.status(400).send({ error: 'Invalid code' }); + return; + } + + // verify mfa token + const ts = new TokenService(); + let mfaPayload: MFATokenPayload; + try { + mfaPayload = await ts.verifyMFAToken(mfaToken); + console.log('mfaPayload:', mfaPayload); + } catch (e) { + if (e instanceof InvalidTokenError) { + res.status(401).send({ error: 'Invalid MFA token' }); + return; + } else { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + return; + } + } + + if (req.deviceId !== mfaPayload.deviceId) { + res.status(400).send({ error: 'Invalid device id' }); + return; + } + + const as = new AuthService(); + try { + const result = await as.verifyMFA(mfaPayload.userId, code); + if (!result) { + // mfa is valid, create a new one since the old one is now blacklisted + const newMfaToken = await ts.createMFAToken( + mfaPayload.userId, + mfaPayload.deviceId, + mfaPayload.formattedKey, + ); + this.writeMFACookie(res, newMfaToken); + res.status(400).send({ error: 'Incorrect MFA Code' }); + return; + } + + // mfa correct, generate new tokens + const { accessToken, refreshToken, idToken } = + await ts.generateAllTokens(mfaPayload.userId, mfaPayload.deviceId); + this.writeAuthCookies(res, accessToken, refreshToken, idToken); + this.deleteMFACookie(res); + res.status(200).send(); + return; + } catch (e) { + if (e instanceof MFAError) { + // mfa is valid, create a new one since the old one is now blacklisted + const newMfaToken = await ts.createMFAToken( + mfaPayload.userId, + mfaPayload.deviceId, + mfaPayload.formattedKey, + ); + this.writeMFACookie(res, newMfaToken); + switch (e.type) { + case MFAErrorType.INCORRECT_CODE: + res.status(400).send({ error: 'Incorrect MFA Code' }); + break; + case MFAErrorType.MFA_ALREADY_CONFIRMED: + // this should never happen + console.error('mfa already confirmed in verify mfa'); + res.status(500).send({ error: 'Internal Server Error' }); + break; + case MFAErrorType.MFA_NOT_CONFIRMED: + res.status(400).send({ error: 'MFA not confirmed' }); + break; + } + } else { + console.error(e); + res.status(500).send({ error: 'Internal Server Error' }); + } + return; + } + } catch (e) { + console.error(e); + res.status(500).send({ error: 'Internal server error' }); + } + } } diff --git a/api/src/index.ts b/api/src/index.ts index cfc0409..a5cc586 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -8,8 +8,6 @@ import { parseAuth } from './middleware/auth'; import { bigIntToHexMiddleware } from './middleware/bigint'; // eslint-disable-next-line no-restricted-imports import { DatabaseService } from './services/db/db'; -import { SRP } from './services/auth/auth'; -import { modPow } from './services/auth/srp-utils'; dotenv.config(); @@ -35,6 +33,7 @@ app.use('/api', router); async function start() { const db = new DatabaseService(); + await Promise.all([ db.accessBlacklistRepository.loadBlacklistToCache(), db.mfaBlacklistRepository.loadBlacklistToCache(), @@ -51,105 +50,3 @@ async function start() { // eslint-disable-next-line @typescript-eslint/no-floating-promises start(); - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -function testSRP() { - const email = 'hady@gmail.com'; - const password = 'password'; - const salt = 'e6eb7979923ebb117785a56ab84f94ff'; - let verifier: bigint; - - { - const x = SRP.calculateX(email, password, salt); - //g.modPow(x, N) - verifier = modPow(SRP.g, x, SRP.N); - } - - console.log('verifier:', verifier.toString(16)); - - // server keys - const { b, B } = SRP.generateServerKeys(verifier); - //const bString = - // '39083a31e24251fae9fa74a3f2f9ea9cc3827eb18179c2563333cd3cfc0cae1e'; - //const BString = - // '586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; - //const b = BigInt('0x' + bString); - //const B = BigInt('0x' + BString); - - console.log('b:', b.toString(16)); - console.log('B:', B.toString(16)); - - // client keys - const a = SRP.generateRandomBigInt(32); - //const aString = - // 'f1397a8f372866bf49ddf9a661e27e9612f88866ed7be78e741b90abcbb6ee77'; - //const a = BigInt('0x' + aString); - console.log('a:', a.toString(16)); - - // simulate client calculating proof - const { A, M } = SRP.simulateDartClientProof(email, password, salt, a, B); - - console.log('test A:', A.toString(16)); - - // verify proof on server - SRP.verifyClientProof({ email, salt, verifier, A, b, B, Mc: M }); - - console.log('\n\n\n'); -} - -//testSRP(); - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -function testSRP2() { - const email = 'hady@gmail.com'; - const password = 'password'; - const salt = 'e231b0fd7f9106a2ca2cc2fc81167495'; - let verifier: bigint; - - { - const x = SRP.calculateX(email, password, salt); - //g.modPow(x, N) - verifier = modPow(SRP.g, x, SRP.N); - } - - console.log(''); - console.log('verifier:', verifier.toString(16)); - console.log(''); - - // server keys - const { b, B } = SRP.generateServerKeys(verifier); - //const bString = - // '39083a31e24251fae9fa74a3f2f9ea9cc3827eb18179c2563333cd3cfc0cae1e'; - //const BString = - // '586d9483b54b8c09f987ee5e1c49e6053c8b5289aedf25176ff84280bd5faa8d6a357f1757165d8292926268fde0d4e0774db44d4a2e1babf96197df397a655377bd870f5dbede11cb00b16bb33350c58b6d10300cb4ffc8d83f7a3637616bbcf1f0d66a04b16674be9b6a7df64c8337fc4c07a6315934292d5e453db68dfe751b1c902fb5190aff696af17023a1b7159cc04c8ae5d28bdfd5b9a682e4762b15c28ac795416dc33254393a41584b34d8c8717cc2398621630375dc1e43e34c0a1c63f23efc57a07a363df4663693a0e2eae5c047f8fb2d1cdfe61fef47ccfc72ab96013272bc2a8aff184e94a77e95b393eccb37aa89dfdc24d3412a9a473643'; - //const b = BigInt('0x' + bString); - //const B = BigInt('0x' + BString); - - console.log('b:', b.toString(16)); - console.log('B:', B.toString(16)); - console.log(''); - - // client keys - //const a = SRP.generateRandomBigInt(32); - const aString = - '31fbe9b30e7a5037f37137483b0909e0dce1c4ac4de47a269879e4481044d282'; - const a = BigInt('0x' + aString); - console.log('a:', a.toString(16)); - console.log(''); - - // simulate client calculating proof - const { A, M } = SRP.simulateDartClientProof(email, password, salt, a, B); - - console.log(''); - console.log('test A:', A.toString(16)); - console.log(''); - - // verify proof on server - console.log(''); - SRP.verifyClientProof({ email, salt, verifier, A, b, B, Mc: M }); - console.log(''); - - console.log('\n\n\n'); -} - -//testSRP2(); diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index 9a2d823..e474375 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -13,12 +13,10 @@ authRouter.post('/init', (req, res) => authRouter.post('/login', (req, res) => AuthController.login(req, res)); -//authRouter.post('/mfa/confirm', (req, res) => -// AuthController.confirmMFA(req, res), -//); -// -//// TODO: get mfa formatted key route (only if mfa is unconfirmed) -// -//authRouter.post('/mfa/verify', (req, res) => -// AuthController.verifyMFA(req, res), -//); +authRouter.post('/mfa/confirm', (req, res) => + AuthController.confirmMFA(req, res), +); + +authRouter.post('/mfa/verify', (req, res) => + AuthController.verifyMFA(req, res), +); diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index 42105cb..5e8cc77 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -45,6 +45,10 @@ export const srpSessionSchema = z.object({ b: bigIntTransormed, /** Server public key */ B: bigIntTransormed, + /** MFA formatted key */ + mfaFormattedKey: mfaFormattedKeySchema, + /** Whether the user's mfa has been setup and confirmed */ + mfaConfirmed: z.boolean(), }); export type SRPSession = z.infer; @@ -64,10 +68,20 @@ export const SRPJSONSessionSchema = z.object({ b: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), /** Server public key */ B: bigIntTransormed.transform((val) => `0x${val.toString(16)}`), + /** MFA formatted key */ + mfaFormattedKey: mfaFormattedKeySchema, + /** Whether the user's mfa has been setup and confirmed */ + mfaConfirmed: z.boolean(), }); export type SRPJSONSession = z.infer; +export const SRPMongoSessionSchema = SRPJSONSessionSchema.extend({ + createdAt: z.coerce.date(), +}); + +export type SRPMongoSession = z.infer; + /* Error types */ export enum MFAErrorType { diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index e27a85f..b6b402b 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -73,19 +73,13 @@ export class AuthService { verifier: verifierString, } = await this.db.userRepository.getUserSRPCredentials(email); - console.log(''); - console.log('got user salt and verifier'); - console.log('salt:', salt); - console.log('verifier:', verifierString); - console.log(''); - // generate the server keys const verifier = BigInt(verifierString); const { b, B } = SRP.generateServerKeys(verifier); - console.log('server keys generated'); - console.log('b:', b.toString(16)); - console.log('B:', B.toString(16)); - console.log(''); + + // get mfa info + const { formattedKey, confirmed } = + await this.db.userRepository.getUserMFA(userId); const session: SRPSession = { userId: userId.toString(), @@ -94,6 +88,8 @@ export class AuthService { verifier, B, b, + mfaFormattedKey: formattedKey, + mfaConfirmed: confirmed, }; const success = await this.db.srpSessionRepository.storeSRPSession( @@ -107,6 +103,31 @@ export class AuthService { return { salt, B }; } + /** + * Get a user's auth session + * @param email - The user's email + * @returns The SRP session + * @throws An {@link AuthSessionError} if the session is expired or does not exist + */ + public async getAuthSession(email: Email): Promise { + const jsonSession: SRPJSONSession | undefined = + await this.db.srpSessionRepository.getSRPSession(email); + + if (!jsonSession) { + throw new AuthSessionError(); + } + return srpSessionSchema.parse(jsonSession); + } + + /** + * Delete S a user's auth session + * @param email - The user's email + * @returns + */ + public async deleteAuthSession(email: Email): Promise { + return await this.db.srpSessionRepository.deleteSRPSession(email); + } + /** * Verifies the client's proof is correct and generates a corresponding server * proof @@ -114,23 +135,14 @@ export class AuthService { * @param A - The client's public key * @param Mc - The client's proof * @returns The server's proof - * @throws An {@link AuthSessionError} if the session is expired or does not exist * @throws An {@link IncorrectPasswordError} if the client's proof is incorrect */ - public async validateLoginCredentials( + public validateLoginCredentials( email: Email, A: bigint, Mc: bigint, - ): Promise { - // get the auth session - const jsonSession: SRPJSONSession | undefined = - await this.db.srpSessionRepository.getSRPSession(email); - - if (!jsonSession) { - throw new AuthSessionError(); - } - const session: SRPSession = srpSessionSchema.parse(jsonSession); - + session: SRPSession, + ): bigint { // check the client proof is correct const serverProof = SRP.verifyClientProof({ email, @@ -145,53 +157,6 @@ export class AuthService { return serverProof; } - //public async login(data: { - // email: string; - // salt: string; - // verifier: bigint; - // A: bigint; - // b: bigint; - // B: bigint; - // Mc: bigint; - //}) { - // const serverProof = SRP.verifyClientProof(data); - // - // // method didn't throw, client proof correct - // - // const user = await this.db.userRepository.getUserDocByEmail(data.email); - // const mfa: MFA = { - // confirmed: user.mfaConfirmed, - // formattedKey: user.mfaFormattedKey, - // }; - // - // return { user: userWithIdSchema.parse(user), mfa, Ms: serverProof }; - //} - - ///** - // * Get the user's SRP auth session - // * @param email - The user's email - // * @returns The SRP auth session if it exists - // */ - //public async getAuthSession(email: Email): Promise { - // return await this.db.srpSessionRepository.getSRPAuthSession(email); - //} - - ///** - // * Registers a user with our system - // * @param data - The user's information - // * @returns The user that was created and their MFA formatted key - // */ - //public async registerUser( - // data: CreateUserData, - //): Promise<{ user: UserWithId; mfaFormattedKey: MFAFormattedKey }> { - // const userId = await this.db.userRepository.createUser(data, formattedKey); - // - // return { - // user: await this.db.userRepository.getUserById(userId), - // mfaFormattedKey: formattedKey, - // }; - //} - /** * Check if a user with the provided email exists * @param email - The email to check @@ -297,18 +262,6 @@ export class SRP { }): bigint { const { email, salt, verifier, A, b, B, Mc } = data; - console.log(''); - console.log('email:', email); - console.log('salt:', salt); - console.log('verifier:', verifier.toString(16)); - console.log('A:', A.toString(16)); - console.log('b:', b.toString(16)); - console.log('B:', B.toString(16)); - console.log('Mc:', Mc.toString(16)); - - console.log(''); - console.log(''); - // Security check: A should not be 0 mod N if (A % this.N === BigInt(0)) { console.log('A % N === 0, throwing'); @@ -319,9 +272,6 @@ export class SRP { // Calculate u = H(A | B) const u = this.calculateU(A, B); - console.log('u:', u.toString(16)); - console.log(''); - // Security check: u should not be 0 if (u === BigInt(0)) { console.log('u === 0, throwing'); @@ -334,19 +284,12 @@ export class SRP { const Avu = (A * vu) % this.N; const S = modPow(Avu, b, this.N); - console.log('S:', S.toString(16)); - console.log(''); - // Calculate K = H(S) const K = this.hash(S.toString(16)); - console.log('K:', K.toString(16)); // Calculate expected client proof const expectedMc = this.calculateClientProof(email, salt, A, B, K); - console.log('expectedMc:', expectedMc.toString(16)); - console.log('Mc:', Mc.toString(16)); - // Verify client proof if (expectedMc !== Mc) { console.log('expectedMc !== Mc, throwing'); @@ -359,71 +302,6 @@ export class SRP { return Ms; } - /** - * Simulate the Dart client proof calculation to compare results in Node. - */ - static simulateDartClientProof( - email: string, - password: string, - salt: string, - a: bigint, - B: bigint, - ): { A: bigint; K: bigint; M: bigint } { - // Log inputs for debugging - console.log('Simulating Dart client proof with:', { - email, - password, - salt, - a: a.toString(16), - B: B.toString(16), - }); - - // Step 1: A = g^a % N (with A != 0 mod N check) - const A = modPow(this.g, a, this.N); - if (A % this.N === BigInt(0)) { - throw new Error('Invalid A'); - } - console.log('A:', A.toString(16)); - - // Step 2: u = H(A | B) - const u = this.calculateU(A, B); - if (u === BigInt(0)) { - throw new Error('Invalid u'); - } - console.log('u:', u.toString(16)); - - // Step 3: x = H(salt | H(email:password)) - const x = this.calculateX(email, password, salt); - console.log('x:', x.toString(16)); - - // Step 4: S = (B - k*g^x)^(a + u*x) % N - const gx = modPow(this.g, x, this.N); - console.log('gx:', gx.toString(16)); - - const kgx = (this.k * gx) % this.N; - console.log('kgx:', kgx.toString(16)); - - let base = (B - kgx) % this.N; - if (base < BigInt(0)) base += this.N; - console.log('base:', base.toString(16)); - - const exponent = (a + u * x) % (this.N - BigInt(1)); - console.log('exponent:', exponent.toString(16)); - - const S = modPow(base, exponent, this.N); - console.log('S:', S.toString(16)); - - // Step 5: K = H(S) - const K = this.hash(S.toString(16)); - console.log('K:', K.toString(16)); - - // Step 6: M = H(H(N)^H(g) | H(email) | salt | A | B | K) - const M = this.calculateClientProof(email, salt, A, B, K); - console.log('M:', M.toString(16)); - - return { A, K, M }; - } - /** * Calculate the hash parameter u = H(A | B) */ diff --git a/api/src/services/db/db.ts b/api/src/services/db/db.ts index 9f9dbaf..fdba93b 100644 --- a/api/src/services/db/db.ts +++ b/api/src/services/db/db.ts @@ -122,4 +122,16 @@ export class DatabaseService { get householdRepository(): HouseholdRepository { return this._householdRepository; } + + /** Configures all of the databases collections */ + public async configureCollections(): Promise { + await Promise.all([ + this._userRepository.configureCollection(), + this._srpRepository.configureCollection(), + this._tokenRepository.configureCollection(), + this._accessBlacklistRepository.configureCollection(), + this._mfaBlacklistRepository.configureCollection(), + this._householdRepository.configureCollection(), + ]); + } } diff --git a/api/src/services/db/repo.ts b/api/src/services/db/repo.ts index 6445c4a..1428ecd 100644 --- a/api/src/services/db/repo.ts +++ b/api/src/services/db/repo.ts @@ -2,6 +2,7 @@ import { Document, MongoClient, Collection, Db } from 'mongodb'; import { RedisClientType } from 'redis'; export abstract class DatabaseRepository { + protected readonly db: Db; protected readonly client: MongoClient; protected readonly collection: Collection; protected readonly redis: RedisClientType; @@ -13,6 +14,7 @@ export abstract class DatabaseRepository { redis: RedisClientType, ) { this.client = client; + this.db = db; this.collection = db.collection(collectionName); this.redis = redis; } diff --git a/api/src/services/db/repositories/token.ts b/api/src/services/db/repositories/token.ts index e849298..c35b4c4 100644 --- a/api/src/services/db/repositories/token.ts +++ b/api/src/services/db/repositories/token.ts @@ -89,11 +89,61 @@ export class TokenRepository extends DatabaseRepository { super(client, db, TOKENS_COLLECTION_NAME, redis); } + /** + * Configures the token collection by creating necessary indices. + * This method should be called during application initialization. + */ public async configureCollection(): Promise { - // create collection - // - // configure indices - // + try { + // Check if collection exists, if not MongoDB will create it automatically + const collections = await this.db + .listCollections({ name: TOKENS_COLLECTION_NAME }) + .toArray(); + if (collections.length === 0) { + await this.db.createCollection(TOKENS_COLLECTION_NAME); + } + + // Configure indices for TokenGenIdDoc collection + await Promise.all([ + // Index for querying by userId and deviceId (used in getUserTokenGenerationId) + this.collection.createIndex({ userId: 1, deviceId: 1 }), + + // Index for querying by tokenGenerationId (used in isTokenGenerationIdBlacklisted) + this.collection.createIndex({ tokenGenerationId: 1 }), + + // Compound index for the frequent query pattern including blacklisted status + this.collection.createIndex({ + userId: 1, + deviceId: 1, + blacklisted: 1, + }), + + // Index to filter by blacklisted status and expiry + this.collection.createIndex({ blacklisted: 1, expiry: 1 }), + + // TTL index to automatically remove expired tokens + this.collection.createIndex( + { expiry: 1 }, + { + expireAfterSeconds: 0, + partialFilterExpression: { expiry: { $exists: true } }, + }, + ), + + // Index for sorting by created date (used in getUserTokenGenerationId with sort) + this.collection.createIndex({ created: 1 }), + ]); + + console.log( + `Configured ${TOKENS_COLLECTION_NAME} collection with required indices`, + ); + } catch (error) { + console.error( + `Failed to configure ${TOKENS_COLLECTION_NAME} collection:`, + error, + ); + throw error; + } } /** @@ -397,11 +447,47 @@ export class AccessBlacklistRepository extends DatabaseRepository { - // create collection - // - // configure indices - // + try { + // Check if collection exists, if not MongoDB will create it automatically + const collections = await this.db + .listCollections({ name: ACCESS_BLACKLIST_COLLECTION_NAME }) + .toArray(); + if (collections.length === 0) { + await this.db.createCollection(ACCESS_BLACKLIST_COLLECTION_NAME); + } + + // Configure indices + await Promise.all([ + // Unique index for querying by JTI (used in isAccessTokenBlacklisted) + this.collection.createIndex({ jti: 1 }, { unique: true }), + + // Index on created date for potential analytics or cleanup operations + this.collection.createIndex({ created: 1 }), + + // TTL index to automatically remove expired tokens + this.collection.createIndex( + { expiry: 1 }, + { + expireAfterSeconds: 0, + }, + ), + ]); + + console.log( + `Configured ${ACCESS_BLACKLIST_COLLECTION_NAME} collection with required indices`, + ); + } catch (error) { + console.error( + `Failed to configure ${ACCESS_BLACKLIST_COLLECTION_NAME} collection:`, + error, + ); + throw error; + } } /** @@ -525,11 +611,44 @@ export class MFABlacklistRepository extends DatabaseRepository { - // create collection - // - // configure indices - // + try { + // Check if collection exists, if not MongoDB will create it automatically + const collections = await this.db + .listCollections({ name: MFA_BLACKLIST_COLLECTION_NAME }) + .toArray(); + if (collections.length === 0) { + await this.db.createCollection(MFA_BLACKLIST_COLLECTION_NAME); + } + + // Configure indices + await Promise.all([ + // Unique index for querying by JTI (used in isMFATokenBlacklisted) + this.collection.createIndex({ jti: 1 }, { unique: true }), + + // TTL index to automatically remove expired tokens + this.collection.createIndex( + { expiry: 1 }, + { + expireAfterSeconds: 0, + }, + ), + ]); + + console.log( + `Configured ${MFA_BLACKLIST_COLLECTION_NAME} collection with required indices`, + ); + } catch (error) { + console.error( + `Failed to configure ${MFA_BLACKLIST_COLLECTION_NAME} collection:`, + error, + ); + throw error; + } } /** diff --git a/api/src/services/db/repositories/user.ts b/api/src/services/db/repositories/user.ts index 55915a3..775a694 100644 --- a/api/src/services/db/repositories/user.ts +++ b/api/src/services/db/repositories/user.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ import { RedisClientType } from 'redis'; import { DatabaseRepository } from '../repo'; import { Db, MongoClient, ObjectId } from 'mongodb'; @@ -17,6 +16,8 @@ import { MFAFormattedKey, SRPJSONSession, SRPJSONSessionSchema, + SRPMongoSession, + SRPMongoSessionSchema, SRPSession, } from '../../../schemas/auth/auth'; @@ -39,12 +40,37 @@ export class UserRepository extends DatabaseRepository { super(client, db, USER_COLLECTION_NAME, redis); } - // TODO: implement configure collection + // TODO: create more indexes on relevant fields + /** + * Configures the user collection by creating necessary indices. + * This method should be called during application initialization. + */ public async configureCollection(): Promise { - // create collection - // - // configure indices - // + try { + // Check if collection exists, if not MongoDB will create it automatically + const collections = await this.db + .listCollections({ name: USER_COLLECTION_NAME }) + .toArray(); + if (collections.length === 0) { + await this.db.createCollection(USER_COLLECTION_NAME); + } + + // Configure indices + await Promise.all([ + // Create a unique index on email to ensure no duplicate accounts + this.collection.createIndex({ email: 1 }, { unique: true }), + ]); + + console.log( + `Configured ${USER_COLLECTION_NAME} collection with required indices`, + ); + } catch (error) { + console.error( + `Failed to configure ${USER_COLLECTION_NAME} collection:`, + error, + ); + throw error; + } } /** @@ -243,11 +269,11 @@ export class UserRepository extends DatabaseRepository { } // eslint-disable-next-line @typescript-eslint/no-empty-object-type -interface SRPSessionDoc extends SRPJSONSession {} +interface SRPSessionDoc extends SRPMongoSession {} const SRP_SESSION_COLLECTION_NAME = 'srp-sessions'; const SRP_SESSION_KEY_PREFIX = 'srp-auth-session'; -const SRP_SESSION_EXPIRY_SECONDS = 60 * 20; // 20 minutes +const SRP_SESSION_EXPIRY_SECONDS = 60 * 5; // 5 minutes export class SRPSessionRepository extends DatabaseRepository { constructor(client: MongoClient, db: Db, redis: RedisClientType) { @@ -260,56 +286,62 @@ export class SRPSessionRepository extends DatabaseRepository { * Sessions older than SRP_SESSION_EXPIRY_SECONDS are considered expired and won't be loaded. */ public async loadSessionsToCache(): Promise { - // TODO: uncomment - //const cutoffTime = new Date(Date.now() - SRP_SESSION_EXPIRY_SECONDS * 1000); - // - //// Find all sessions that were created within the expiry window - //const docs = await this.collection - // .find({ - // createdAt: { $gt: cutoffTime }, - // }) - // .toArray(); - // - //console.log(`Loading ${docs.length} SRP sessions to Redis cache`); - // - //const promises = docs.map(async (doc) => { - // if (!doc.sessionId) return; - // - // // Calculate remaining TTL - // const createdAt = - // doc.createdAt instanceof Date ? doc.createdAt : new Date(doc.createdAt); - // const elapsedSeconds = Math.floor( - // (Date.now() - createdAt.getTime()) / 1000, - // ); - // const remainingTTL = SRP_SESSION_EXPIRY_SECONDS - elapsedSeconds; - // - // // Only cache if there's remaining time - // if (remainingTTL <= 0) return; - // - // try { - // await this.redis.set( - // `${SRP_SESSION_KEY_PREFIX}:${doc.sessionId}`, - // JSON.stringify(srpSessionJSONSchema.parse(doc)), - // { - // EX: remainingTTL, - // }, - // ); - // } catch (e) { - // console.error(`Failed to cache SRP session ${doc.sessionId}:`, e); - // } - //}); - // - //await Promise.all(promises); + const cutoffTime = new Date(Date.now() - SRP_SESSION_EXPIRY_SECONDS * 1000); + + // Find all sessions that were created within the expiry window + const docs = await this.collection + .find({ + createdAt: { $gt: cutoffTime }, + }) + .toArray(); + + console.log(`Loading ${docs.length} SRP sessions to Redis cache`); + + const promises = docs.map(async (doc) => { + // Calculate remaining TTL + const createdAt = new Date(doc.createdAt); + const elapsedSeconds = Math.floor( + (Date.now() - createdAt.getTime()) / 1000, + ); + const remainingTTL = SRP_SESSION_EXPIRY_SECONDS - elapsedSeconds; + + // Only cache if there's remaining time + if (remainingTTL <= 0) return; + + try { + await this.redis.set( + `${SRP_SESSION_KEY_PREFIX}:${doc.email}`, + JSON.stringify(SRPJSONSessionSchema.parse(doc)), + { + EX: remainingTTL, + }, + ); + } catch (e) { + console.error(`Failed to cache SRP session ${doc.email}:`, e); + } + }); + + await Promise.all(promises); } - // TODO: implement configure collection public async configureCollection(): Promise { - //await Promise.all([ - // // Create unique index on sessionId - // this.collection.createIndex({ sessionId: 1 }, { unique: true }), - // // Create index on createdAt for expire queries - // this.collection.createIndex({ createdAt: 1 }), - //]); + // Check if collection exists, if not MongoDB will create it automatically + const collections = await this.db + .listCollections({ name: USER_COLLECTION_NAME }) + .toArray(); + if (collections.length === 0) { + await this.db.createCollection(USER_COLLECTION_NAME); + } + + await Promise.all([ + // Create unique index on sessionId + this.collection.createIndex({ email: 1 }, { unique: true }), + // Create TTL index on createdAt for auto-expiration after SRP_SESSION_EXPIRY_SECONDS + this.collection.createIndex( + { createdAt: 1 }, + { expireAfterSeconds: SRP_SESSION_EXPIRY_SECONDS }, + ), + ]); } /** @@ -325,25 +357,47 @@ export class SRPSessionRepository extends DatabaseRepository { createdAt: new Date(), }); - console.log('session being stored in db:', jsonSession); - - // TODO: store session in redis + // store session in redis + const redisPromise = this.redis.set( + `${SRP_SESSION_KEY_PREFIX}:${session.email}`, + JSON.stringify(jsonSession), + { + EX: SRP_SESSION_EXPIRY_SECONDS, + }, + ); - // store session in db as a backup - const result = await this.collection.updateOne( + // store session in mongo as a backup (fail-safe) + const mongoPromise = this.collection.updateOne( { userId: session.userId.toString() }, { - $set: jsonSession, + $set: SRPMongoSessionSchema.parse(jsonSession), }, { upsert: true }, ); - console.log('result:', result); + try { + const redisResult = await redisPromise; + if (redisResult) { + return true; + } + } catch (e) { + console.error('Failed to store SRP session in redis:', e); + // ignore, try mongo + } - return ( - result.acknowledged && - result.matchedCount + result.modifiedCount + result.upsertedCount > 0 - ); + try { + const mongoResult = await mongoPromise; + return ( + mongoResult.acknowledged && + mongoResult.matchedCount + + mongoResult.modifiedCount + + mongoResult.upsertedCount > + 0 + ); + } catch (e) { + console.error('Failed to store SRP session in mongo:', e); + } + return false; } /** @@ -355,7 +409,19 @@ export class SRPSessionRepository extends DatabaseRepository { public async getSRPSession( email: Email, ): Promise { - // TODO: check redis first + // check redis first + const redisResult = await this.redis.get( + `${SRP_SESSION_KEY_PREFIX}:${email}`, + ); + + if (redisResult) { + try { + return SRPJSONSessionSchema.parse(JSON.parse(redisResult)); + } catch (e) { + console.error('Failed to parse SRP session from redis', e); + // ignore, try mongo + } + } const session = await this.collection.findOne({ email: email, @@ -366,81 +432,21 @@ export class SRPSessionRepository extends DatabaseRepository { return SRPJSONSessionSchema.parse(session); } - //public async storeSRPAuthSession(sessionId: string, session: SRPSession) { - // // convert bigints to strings - // const sessionJSON = srpSessionJSONSchema.parse({ - // ...session, - // createdAt: new Date(), - // }); - // - // console.log('session being stored in db:', sessionJSON); - // console.log(''); - // - // // TODO: uncomment - // // store session in redis - // //const redisPromise = this.redis.set( - // // `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, - // // JSON.stringify(srpSessionJSONSchema.parse(sessionJSON)), - // // { - // // EX: SRP_SESSION_EXPIRY_SECONDS, - // // }, - // //); - // - // // store session in db (fail-safe) using upsert - // const mongoPromise = this.collection.updateOne( - // { sessionId: sessionId }, - // { $set: sessionJSON }, - // { upsert: true }, - // ); - // - // // TODO: uncomment - // //try { - // //await redisPromise; - // //return; - // //} catch (e) { - // //console.error( - // // 'Failed to store SRP session in redis. trying mongo. error:', - // // e, - // //); - // try { - // await mongoPromise; - // } catch (mongoError) { - // console.error('Failed to store SRP session in mongo:', mongoError); - // throw new Error('Failed to store SRP session in both Redis and MongoDB'); - // } - // //} - //} - - //public async getSRPAuthSession( - // sessionId: string, - //): Promise { - // // TODO: uncomment - // //const redisResult = await this.redis.get( - // // `${SRP_SESSION_KEY_PREFIX}:${sessionId}`, - // //); - // //if (redisResult) { - // // try { - // // console.log( - // // 'redis result:', - // // srpSessionSchema.parse(JSON.parse(redisResult)), - // // ); - // // - // // return srpSessionSchema.parse(JSON.parse(redisResult)); - // // } catch (e) { - // // console.error('Failed to parse SRP session from redis', e); - // // // ignore, try mongo - // // } - // //} - // const mongoResult = await this.collection.findOne({ - // sessionId, - // }); - // if (!mongoResult) { - // return null; - // } - // console.log( - // 'session retreived from mongo:', - // srpSessionSchema.parse(mongoResult), - // ); - // return srpSessionSchema.parse(mongoResult); - //} + /** + * Delete a user's SRP session + * @param email - The user's email + */ + public async deleteSRPSession(email: Email): Promise { + try { + await this.redis.del(`${SRP_SESSION_KEY_PREFIX}:${email}`); + } catch (e) { + console.error('Failed to delete SRP session from redis:', e); + } + + try { + await this.collection.deleteOne({ email: email }); + } catch (e) { + console.error('Failed to delete SRP session from mongo:', e); + } + } } diff --git a/app/lib/main.dart b/app/lib/main.dart index e000651..275b853 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:smartify/screens/auth/sign_in.dart'; -import 'package:smartify/services/auth.dart'; import 'models/mfa.dart'; import 'models/user.dart'; diff --git a/app/lib/screens/auth/sign_in.dart b/app/lib/screens/auth/sign_in.dart index c5d5186..f34e49d 100644 --- a/app/lib/screens/auth/sign_in.dart +++ b/app/lib/screens/auth/sign_in.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:smartify/services/auth.dart'; class SignInScreen extends StatefulWidget { diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index 83e2b3a..1c67b24 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -1,5 +1,3 @@ -// ignore_for_file: non_constant_identifier_names, unused_element, avoid_print - import 'dart:convert'; // for the utf8.encode method import 'dart:math'; import 'package:crypto/crypto.dart'; @@ -9,6 +7,11 @@ import 'package:http/http.dart' as http; // TODO: get uri from environment variables // TODO: get device id dynamically class AuthService { + static String? mfaToken; + static String? accessToken; + static String? refreshToken; + static String? idToken; + Future<({String userId, String mfaFormattedKey})?> register( String email, String password, {DateTime? dob, String? sex}) async { @@ -32,14 +35,10 @@ class AuthService { 'x-device-id': '1234', }); - print('register response status: ${response.statusCode}'); - if (response.statusCode >= 200 && response.statusCode < 300) { - print('Registration successful'); // get json body final responseBody = jsonDecode(response.body) as Map; try { - print('body: $responseBody'); final userId = responseBody['userId'] as String; final mfaFormattedKey = responseBody['formattedKey'] as String; return (userId: userId, mfaFormattedKey: mfaFormattedKey); @@ -63,15 +62,12 @@ class AuthService { try { // initiate auth session final uri = Uri.parse('http://localhost:3000/api/auth/init?email=$email'); - print(uri.toString()); final response = await http.post(uri, headers: { 'x-device-id': '1234', }); - print('init auth response status: ${response.statusCode}'); if (response.statusCode >= 200 && response.statusCode < 300) { // get body final responseBody = jsonDecode(response.body) as Map; - print('response body: $responseBody'); try { final salt = responseBody['salt'] as String; final BString = responseBody['B'] as String; @@ -106,7 +102,6 @@ class AuthService { print('Error initiating auth session'); return; } - print('session: $session'); // generate private key final a = SRP.generatePrivateKey(); @@ -124,19 +119,14 @@ class AuthService { 'x-device-id': '1234', }); - print('login response status: ${response.statusCode}'); if (response.statusCode >= 200 && response.statusCode < 300) { // get body final responseBody = jsonDecode(response.body) as Map; - print('response body: $responseBody'); - try { - final MsString = responseBody['Ms'] as String; - print('MsString: $MsString'); - final Ms = BigInt.parse(MsString.substring(2), radix: 16); - print('Ms: $Ms'); - } catch (e) { - print('Error getting body: $e'); - } + final MsString = responseBody['Ms'] as String; + final Ms = BigInt.parse(MsString.substring(2), radix: 16); + print('Ms: $Ms'); + + print('logged in successfully'); } else { // error if (response.body.isNotEmpty) { @@ -152,11 +142,14 @@ class AuthService { /// Client SRP methods class SRP { + // ignore: non_constant_identifier_names static String SRP_N_HEX = (""" AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73""") .trim() .replaceAll(RegExp(r'[\s\r\n]+'), ''); + // ignore: non_constant_identifier_names static int SRP_GENERATOR = 2; + // ignore: non_constant_identifier_names static int SRP_K = 3; // Prime number used as modulus @@ -238,7 +231,9 @@ class SRP { static BigInt calculateClientProof( String email, String salt, BigInt A, BigInt B, BigInt K) { // Hash N and g + // ignore: non_constant_identifier_names final HN = hashToBigInt(N.toRadixString(16)); + // ignore: non_constant_identifier_names final Hg = hashToBigInt(g.toRadixString(16)); // XOR operation (convert to buffer for easier XOR) @@ -251,6 +246,7 @@ class SRP { ); // hash email + // ignore: non_constant_identifier_names final Hemail = hashString(email); // concat @@ -269,18 +265,12 @@ class SRP { // Step 1: derive public key final A = derivePublicKey(a); - print('A: 0x${A.toRadixString(16)}'); - // Step 2: calculate u = H(A | B) final u = calcluateU(A, B); - print('u: 0x${u.toRadixString(16)}'); - // Step 3: calculate x = H(salt | H(email | ':' | password)) final x = calculateX(email, password, salt); - print('x: 0x${x.toRadixString(16)}'); - // Step 4: calculate S = (B - k * g^x)^(a + u * x) % N final gx = g.modPow(x, N); final kgx = (k * gx) % N; @@ -290,22 +280,13 @@ class SRP { final exponent = (a + (u * x)) % (N - BigInt.one); - print('base: 0x${base.toRadixString(16)}'); - print('exponent: 0x${exponent.toRadixString(16)}'); - final S = base.modPow(exponent, N); - print('S: 0x${S.toRadixString(16)}'); // Step 5: calculate K = H(S) final K = hashToBigInt(S.toRadixString(16)); - print('K: 0x${K.toRadixString(16)}'); // Step 6: calculate client proof M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) final M = calculateClientProof(email, salt, A, B, K); - print('M: 0x${M.toRadixString(16)}'); - - // TEMP - // TODO: update with proper typing return ( A: A, From 89dcb9455078d8ec92c1a899cf21a9aa3b9aaffb Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Tue, 11 Mar 2025 14:32:34 +0300 Subject: [PATCH 17/25] added a token refresh route as well as auto refresh and added a logout route --- api/src/controllers/auth.ts | 110 +++++++++++++++++- api/src/index.ts | 2 + api/src/middleware/auth.ts | 47 ++------ api/src/routes/auth.ts | 10 +- api/src/schemas/auth/auth.ts | 4 +- api/src/services/auth/token.ts | 11 +- api/src/services/db/db.ts | 200 +++++++++++++++++++++++++++------ 7 files changed, 298 insertions(+), 86 deletions(-) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 1113362..d91c118 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -20,7 +20,11 @@ import { } from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; import { MFAService } from '../services/auth/mfa'; -import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; +import { + InvalidTokenError, + MFATokenPayload, + tokenTypeSchema, +} from '../schemas/auth/tokens'; const MFA_TOKEN_COOKIE_NAME = 'mfa-token'; const ACCESS_TOKEN_COOKIE_NAME = 'access-token'; @@ -28,7 +32,14 @@ const REFRESH_TOKEN_COOKIE_NAME = 'refresh-token'; const ID_TOKEN_COOKIE_NAME = 'id-token'; export class AuthController { - private static writeAuthCookies( + /** + * Write the auth tokens to the response's cookies + * @param res - The response + * @param accessToken - The access token + * @param refreshToken - The refresh token + * @param idToken - The id token + */ + public static writeAuthCookies( res: Response, accessToken: string, refreshToken?: string, @@ -61,7 +72,12 @@ export class AuthController { } } - private static writeMFACookie(res: Response, mfaToken: string) { + /** + * Write the MFA token to the response's cookies + * @param res - The response + * @param mfaToken - The MFA token + */ + public static writeMFACookie(res: Response, mfaToken: string) { res.cookie(MFA_TOKEN_COOKIE_NAME, mfaToken, { httpOnly: true, secure: false, @@ -72,18 +88,30 @@ export class AuthController { }); } - private static deleteAllCookies(res: Response) { + /** + * Delete all auth cookies from the response (auth and MFA) + * @param res - The response + */ + public static deleteAllAuthCookies(res: Response) { this.deleteMFACookie(res); this.deleteAuthCookies(res); } - private static deleteAuthCookies(res: Response) { + /** + * Delete the auth token cookies from the response + * @param res - The response + */ + public static deleteAuthCookies(res: Response) { res.clearCookie(ACCESS_TOKEN_COOKIE_NAME); res.clearCookie(REFRESH_TOKEN_COOKIE_NAME); res.clearCookie(ID_TOKEN_COOKIE_NAME); } - private static deleteMFACookie(res: Response) { + /** + * Delete the MFA token cookie from the response + * @param res - The response + */ + public static deleteMFACookie(res: Response) { res.clearCookie(MFA_TOKEN_COOKIE_NAME); } @@ -428,4 +456,74 @@ export class AuthController { res.status(500).send({ error: 'Internal server error' }); } } + + /** + * Refreshes the user's tokens. This method will not send a response, it only + * adds the tokens to the response object. + * @param req - The request + * @param res - The response + */ + public static async refresh(req: AuthenticatedRequest, res: Response) { + // auto refresh + // if access token is invalid (possibly expired) or expiring soon (within 5 minutes) + if ( + !req.accessTokenPayload || + req.accessTokenPayload.exp - Date.now() / 1000 < 300 + ) { + // check refresh token + const refreshToken: string | undefined = req.cookies['refresh-token'] as + | string + | undefined; + + if (refreshToken) { + const ts = new TokenService(); + const { valid, payload } = await ts.verifyToken(refreshToken, true); + + if (valid) { + if (payload!.type === tokenTypeSchema.enum.REFRESH && req.deviceId) { + // refresh tokens + const { + accessToken, + refreshToken: newRefreshToken, + idToken, + } = await ts.refreshTokens(refreshToken, req.deviceId); + + // set new tokens in cookies + AuthController.writeAuthCookies( + res, + accessToken, + newRefreshToken, + idToken, + ); + req.tokensRefreshed = true; + } + } + } + } + } + + public static refreshTokens(req: AuthenticatedRequest, res: Response) { + tryAPIController(res, async () => { + if (req.tokensRefreshed) { + res.status(200).send(); + return; + } + await this.refresh(req, res); + res.status(200).send(); + return; + }); + } + + public static logout(req: AuthenticatedRequest, res: Response) { + tryAPIController(res, async () => { + // change generation id + const ts = new TokenService(); + await ts.revokeDeviceRefreshTokens(req.user!._id, req.deviceId!); + + // delete all auth cookies + this.deleteAllAuthCookies(res); + + res.status(200).send(); + }); + } } diff --git a/api/src/index.ts b/api/src/index.ts index a5cc586..d2ebfaf 100644 --- a/api/src/index.ts +++ b/api/src/index.ts @@ -34,6 +34,8 @@ app.use('/api', router); async function start() { const db = new DatabaseService(); + await db.connect(); + await Promise.all([ db.accessBlacklistRepository.loadBlacklistToCache(), db.mfaBlacklistRepository.loadBlacklistToCache(), diff --git a/api/src/middleware/auth.ts b/api/src/middleware/auth.ts index c43b8ed..27031c2 100644 --- a/api/src/middleware/auth.ts +++ b/api/src/middleware/auth.ts @@ -2,9 +2,10 @@ import { Response, NextFunction } from 'express'; import { AuthenticatedRequest } from '../schemas/auth/auth'; import { TokenService } from '../services/auth/token'; import { AccessTokenPayload, tokenTypeSchema } from '../schemas/auth/tokens'; +import { AuthController } from '../controllers/auth'; // TODO: auto refresh tokens if access is about to expire -// TODO finish implementation and testing +// TODO: finish implementation and testing export const parseAuth = async ( req: AuthenticatedRequest, res: Response, @@ -21,6 +22,7 @@ export const parseAuth = async ( // get access token from authorization header const authHeader = req.headers.authorization; + let accessTokenPayload: AccessTokenPayload | undefined = undefined; if (authHeader) { const prefix = 'Bearer '; if (authHeader.startsWith(prefix)) { @@ -30,6 +32,8 @@ export const parseAuth = async ( if (valid) { if (payload!.type === tokenTypeSchema.enum.ACCESS) { + accessTokenPayload = payload as AccessTokenPayload; + req.accessTokenPayload = accessTokenPayload; req.user = (payload as AccessTokenPayload).user; } } @@ -43,50 +47,15 @@ export const parseAuth = async ( const { valid, payload } = await ts.verifyToken(accessToken, true); if (valid) { if (payload!.type === tokenTypeSchema.enum.ACCESS) { + accessTokenPayload = payload as AccessTokenPayload; + req.accessTokenPayload = accessTokenPayload; req.user = (payload as AccessTokenPayload).user; } } } } - // TODO: auto refresh - //if (!req.user) { - // // access either missing or invalid (possibly expired), check for refresh - // const refreshToken: string | undefined = req.cookies['refresh-token'] as - // | string - // | undefined; - // const deviceId = req.deviceId; - // if (refreshToken && deviceId) { - // const { valid, payload } = await ts.verifyToken(refreshToken, true); - // if (valid) { - // if (payload!.type === tokenTypeSchema.enum.REFRESH) { - // // refresh access token - // const newTokens = await ts.refreshTokens(refreshToken, deviceId); - // - // // set new tokens in cookies - // res.cookie('access-token', newTokens.accessToken, { - // httpOnly: true, - // secure: false, // TODO: set to true in production - // sameSite: 'none', - // }); - // if (newTokens.refreshToken) { - // res.cookie('refresh-token', newTokens.refreshToken, { - // httpOnly: true, - // secure: false, // TODO: set to true in production - // sameSite: 'none', - // }); - // } - // if (newTokens.idToken) { - // res.cookie('id-token', newTokens.idToken, { - // httpOnly: false, - // secure: false, // TODO: set to true in production - // sameSite: 'none', - // }); - // } - // } - // } - // } - //} + await AuthController.refresh(req, res); next(); } catch (e) { diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index e474375..9f069c8 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -1,6 +1,6 @@ import { Router } from 'express'; import { AuthController } from '../controllers/auth'; -import { requireDeviceId } from '../middleware/auth'; +import { requireAuth, requireDeviceId } from '../middleware/auth'; export const authRouter = Router(); authRouter.use(requireDeviceId); @@ -20,3 +20,11 @@ authRouter.post('/mfa/confirm', (req, res) => authRouter.post('/mfa/verify', (req, res) => AuthController.verifyMFA(req, res), ); + +authRouter.get('/refresh', requireAuth, (req, res) => + AuthController.refreshTokens(req, res), +); + +authRouter.get('/logout', requireAuth, (req, res) => + AuthController.logout(req, res), +); diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index 5e8cc77..571e1db 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -1,12 +1,14 @@ import { Request } from 'express'; import { z } from 'zod'; -import { AccessTokenUser } from './tokens'; +import { AccessTokenPayload, AccessTokenUser } from './tokens'; import { objectIdOrStringSchema, objectIdStringSchema } from '../obj-id'; import { emailSchema } from './user'; export interface AuthenticatedRequest extends Request { user?: AccessTokenUser | undefined; + accessTokenPayload?: AccessTokenPayload | undefined; deviceId?: string | undefined; + tokensRefreshed?: boolean | undefined; } export const mfaFormattedKeySchema = z.string(); diff --git a/api/src/services/auth/token.ts b/api/src/services/auth/token.ts index 7f19ecd..5bec991 100644 --- a/api/src/services/auth/token.ts +++ b/api/src/services/auth/token.ts @@ -564,7 +564,10 @@ export class TokenService { * @param deviceId - The device ID to revoke tokens for * @returns the user's new token generation ID */ - public async revokeDeviceRefreshTokens(userId: string, deviceId: string) { + public async revokeDeviceRefreshTokens( + userId: ObjectIdOrString, + deviceId: string, + ) { return await this.db.tokenRepository.changeUserTokenGenerationId( userId, deviceId, @@ -583,7 +586,7 @@ export class TokenService { * * @param userId - The user for whom to revoke all tokens */ - public async revokeAllTokensImmediately(userId: string) { + public async revokeAllTokensImmediately(userId: ObjectIdOrString) { // add to blacklist await this.db.tokenRepository.blacklistTokenGenerationIds(userId); } @@ -652,7 +655,7 @@ export class TokenService { * @returns The generated MFA token */ public async createMFAToken( - userId: string, + userId: ObjectIdOrString, deviceId: string, formattedKey?: MFAFormattedKey, ): Promise { @@ -661,7 +664,7 @@ export class TokenService { const mfaTokenPayload: Omit = { type: 'MFA', - userId, + userId: userId.toString(), deviceId, iat: createdSeconds, jti: randomUUID(), diff --git a/api/src/services/db/db.ts b/api/src/services/db/db.ts index fdba93b..0923580 100644 --- a/api/src/services/db/db.ts +++ b/api/src/services/db/db.ts @@ -14,43 +14,126 @@ export class DatabaseService { protected static client: MongoClient; protected static db: Db; protected static redis: RedisClientType; + private static connectionPromise: Promise | null = null; // Repositories - private _userRepository: UserRepository; - private _srpRepository: SRPSessionRepository; - private _tokenRepository: TokenRepository; - private _accessBlacklistRepository: AccessBlacklistRepository; - private _mfaBlacklistRepository: MFABlacklistRepository; - private _householdRepository: HouseholdRepository; + private _userRepository!: UserRepository; + private _srpRepository!: SRPSessionRepository; + private _tokenRepository!: TokenRepository; + private _accessBlacklistRepository!: AccessBlacklistRepository; + private _mfaBlacklistRepository!: MFABlacklistRepository; + private _householdRepository!: HouseholdRepository; constructor() { + // Start connection process in constructor + this.connect().catch((err) => { + console.error( + 'Failed to connect to databases during initialization:', + err, + ); + throw new Error('Failed to connect to databases during initialization'); + }); + } + + /** + * Connects to MongoDB and Redis, then initializes repositories. + * Ensures only one connection attempt is made regardless of how many times it's called. + */ + public async connect(): Promise { + // If we're already connecting or connected, return the existing promise + if (DatabaseService.connectionPromise) { + return DatabaseService.connectionPromise; + } + + // Create a new connection promise + DatabaseService.connectionPromise = this.establishConnections(); + + try { + // Wait for connections to be established + await DatabaseService.connectionPromise; + + // Initialize repositories after successful connection + this.initializeRepositories(); + } catch (error) { + // Reset connection promise on failure so a future call can try again + DatabaseService.connectionPromise = null; + throw error; + } + + return DatabaseService.connectionPromise; + } + + /** + * Establishes connections to MongoDB and Redis + */ + private async establishConnections(): Promise { + // Connect to both databases but don't use Promise.all because we want + // to know specifically which one failed if there's an error + await this.connectToMongoDB(); + await this.connectToRedis(); + } + + /** + * Connects to MongoDB + */ + private async connectToMongoDB(): Promise { if (!DatabaseService.db) { const client = new MongoClient(process.env.MONGODB_URL!, { // TODO: configure pool settings }); - client - .connect() - .then(() => { - console.log('Connected to MongoDB'); - }) - .catch((err) => { - console.error('Error connecting to MongoDB', err); - }); - DatabaseService.client = client; - DatabaseService.db = client.db(DB_NAME); + + try { + await client.connect(); + console.log('Connected to MongoDB'); + DatabaseService.client = client; + DatabaseService.db = client.db(DB_NAME); + } catch (err) { + console.error('Error connecting to MongoDB', err); + throw new Error('Error connecting to MongoDB'); + } } + } + + /** + * Connects to Redis + */ + private async connectToRedis(): Promise { if (!DatabaseService.redis) { + // Define connection options with a reasonable socket timeout DatabaseService.redis = createClient({ url: process.env.REDIS_URL, + socket: { + reconnectStrategy: (retries) => { + // Maximum number of retries + if (retries > 3) { + return new Error( + 'Redis connection failed after multiple attempts', + ); + } + // Exponential backoff with a maximum of 3 seconds + return Math.min(retries * 1000, 3000); + }, + connectTimeout: 5000, // 5 seconds timeout for initial connection + }, }); - DatabaseService.redis - .on('connect', () => { + // Create a promise that will reject if a connection error occurs + const errorPromise = new Promise((_, reject) => { + const errorHandler = (err: Error) => { + console.error('Redis connection error:', err); + reject(new Error(`Failed to connect to Redis: ${err.message}`)); + }; + + DatabaseService.redis.on('error', errorHandler); + + // Remove the error handler once connected successfully + DatabaseService.redis.once('connect', () => { console.log('Connected to Redis'); - }) - .on('error', (err) => { - console.error('Error connecting to Redis', err); - }) + DatabaseService.redis.removeListener('error', errorHandler); + }); + }); + + DatabaseService.redis .on('end', () => { console.log('Disconnected from Redis'); }) @@ -58,15 +141,26 @@ export class DatabaseService { console.log('Reconnecting to Redis'); }); - DatabaseService.redis - .connect() - .then(() => console.log('db connected')) - .catch((err) => { - console.error('db error', err); - throw err; - }); + try { + // Race between connection attempt and connection error + await Promise.race([DatabaseService.redis.connect(), errorPromise]); + console.log('Redis client connected'); + } catch (err) { + console.error('Error connecting to Redis client:', err); + // Clean up the failed Redis client + await DatabaseService.redis.disconnect().catch(() => {}); + // Reset Redis client in a type-safe way + DatabaseService.redis = undefined as unknown as RedisClientType; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access + throw new Error(`Error connecting to Redis: ${(err as any).message}`); + } } + } + /** + * Initializes all repository instances + */ + private initializeRepositories(): void { // Initialize repositories this._userRepository = new UserRepository( DatabaseService.client, @@ -103,35 +197,71 @@ export class DatabaseService { } get userRepository(): UserRepository { + if (!this._userRepository) { + throw new Error( + 'Database connection not established. Call connect() and await it before using repositories.', + ); + } return this._userRepository; } + get srpSessionRepository(): SRPSessionRepository { + if (!this._srpRepository) { + throw new Error( + 'Database connection not established. Call connect() and await it before using repositories.', + ); + } return this._srpRepository; } get tokenRepository(): TokenRepository { + if (!this._tokenRepository) { + throw new Error( + 'Database connection not established. Call connect() and await it before using repositories.', + ); + } return this._tokenRepository; } + get accessBlacklistRepository(): AccessBlacklistRepository { + if (!this._accessBlacklistRepository) { + throw new Error( + 'Database connection not established. Call connect() and await it before using repositories.', + ); + } return this._accessBlacklistRepository; } + get mfaBlacklistRepository(): MFABlacklistRepository { + if (!this._mfaBlacklistRepository) { + throw new Error( + 'Database connection not established. Call connect() and await it before using repositories.', + ); + } return this._mfaBlacklistRepository; } get householdRepository(): HouseholdRepository { + if (!this._householdRepository) { + throw new Error( + 'Database connection not established. Call connect() and await it before using repositories.', + ); + } return this._householdRepository; } /** Configures all of the databases collections */ public async configureCollections(): Promise { + // Ensure we're connected before configuring collections + await this.connect(); + await Promise.all([ - this._userRepository.configureCollection(), - this._srpRepository.configureCollection(), - this._tokenRepository.configureCollection(), - this._accessBlacklistRepository.configureCollection(), - this._mfaBlacklistRepository.configureCollection(), - this._householdRepository.configureCollection(), + this.userRepository.configureCollection(), + this.srpSessionRepository.configureCollection(), + this.tokenRepository.configureCollection(), + this.accessBlacklistRepository.configureCollection(), + this.mfaBlacklistRepository.configureCollection(), + this.householdRepository.configureCollection(), ]); } } From 6bff00bc712ad6e7ee820ffd84b962ada42e48b0 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Mon, 17 Mar 2025 21:32:48 +0400 Subject: [PATCH 18/25] fixed an issue with the refresh route --- api/src/controllers/auth.ts | 58 ++++--------- api/src/controllers/mfa.ts | 159 ----------------------------------- api/src/middleware/auth.ts | 25 +++++- api/src/schemas/auth/auth.ts | 1 + 4 files changed, 43 insertions(+), 200 deletions(-) delete mode 100644 api/src/controllers/mfa.ts diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index d91c118..92be21f 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -20,11 +20,7 @@ import { } from '../schemas/auth/user'; import { AuthService } from '../services/auth/auth'; import { MFAService } from '../services/auth/mfa'; -import { - InvalidTokenError, - MFATokenPayload, - tokenTypeSchema, -} from '../schemas/auth/tokens'; +import { InvalidTokenError, MFATokenPayload } from '../schemas/auth/tokens'; const MFA_TOKEN_COOKIE_NAME = 'mfa-token'; const ACCESS_TOKEN_COOKIE_NAME = 'access-token'; @@ -464,42 +460,24 @@ export class AuthController { * @param res - The response */ public static async refresh(req: AuthenticatedRequest, res: Response) { - // auto refresh - // if access token is invalid (possibly expired) or expiring soon (within 5 minutes) - if ( - !req.accessTokenPayload || - req.accessTokenPayload.exp - Date.now() / 1000 < 300 - ) { - // check refresh token - const refreshToken: string | undefined = req.cookies['refresh-token'] as - | string - | undefined; - - if (refreshToken) { - const ts = new TokenService(); - const { valid, payload } = await ts.verifyToken(refreshToken, true); - - if (valid) { - if (payload!.type === tokenTypeSchema.enum.REFRESH && req.deviceId) { - // refresh tokens - const { - accessToken, - refreshToken: newRefreshToken, - idToken, - } = await ts.refreshTokens(refreshToken, req.deviceId); - - // set new tokens in cookies - AuthController.writeAuthCookies( - res, - accessToken, - newRefreshToken, - idToken, - ); - req.tokensRefreshed = true; - } - } - } + if (req.refreshToken === undefined) { + throw new Error('No refresh token to refresh with'); + } + if (req.deviceId === undefined) { + throw new Error('No device id to refresh with'); } + + const ts = new TokenService(); + // refresh tokens + const { + accessToken, + refreshToken: newRefreshToken, + idToken, + } = await ts.refreshTokens(req.refreshToken, req.deviceId); + + // set new tokens in cookies + AuthController.writeAuthCookies(res, accessToken, newRefreshToken, idToken); + req.tokensRefreshed = true; } public static refreshTokens(req: AuthenticatedRequest, res: Response) { diff --git a/api/src/controllers/mfa.ts b/api/src/controllers/mfa.ts deleted file mode 100644 index d5bc5ae..0000000 --- a/api/src/controllers/mfa.ts +++ /dev/null @@ -1,159 +0,0 @@ -//import { Response } from 'express'; -//import { DatabaseService, MFAService } from '../services/auth/mfa'; -//import { MFAToken, mfaTokenSchema } from '../schemas/auth/mfa'; -//import { AuthenticatedRequest } from '../schemas/auth/user'; -// -//// TODO: proper error handling (maybe implement custom error classes) -//export class MFAController { -// public static async initMFA(req: AuthenticatedRequest, res: Response) { -// if (!req.user) { -// console.log('Unauthorized'); -// -// res.status(401).send('Unauthorized'); -// return; -// } -// -// const db = new DatabaseService(); -// const mfa = new MFAService(db); -// -// try { -// const result = await mfa.initUserMFA(req.user.id); -// console.log('MFA setup initiated'); -// -// res.status(201).send(result); -// return; -// } catch (e: any) { -// console.log('Internal Server Error:', e.message); -// res.status(500).send({ -// error: 'Internal Server Error', -// message: 'Please try again later', -// }); -// return; -// } -// } -// -// public static async confirmMFA(req: AuthenticatedRequest, res: Response) { -// if (!req.user) { -// console.log('Unauthorized'); -// -// res -// .status(401) -// .send({ error: 'Unauthorized', message: 'User must be authenticated' }); -// return; -// } -// let mfaToken: MFAToken; -// try { -// //const userToken = req.body.token; -// mfaToken = mfaTokenSchema.parse(req.body.token); -// } catch (_) { -// console.log('Invalid token'); -// -// res.status(400).send({ -// error: 'Invalid token', -// message: 'Token must be a 6 digit number', -// }); -// return; -// } -// -// const db = new DatabaseService(); -// const mfa = new MFAService(db); -// -// try { -// const confirmed = await mfa.finishInitMFASetup(req.user.id, mfaToken); -// if (confirmed) { -// console.log('MFA setup confirmed'); -// -// res.status(200).send({ -// message: 'MFA setup confirmed', -// }); -// } else { -// console.log('MFA setup not confirmed because code is incorrect'); -// res.status(400).send({ -// error: 'Incorrect Code', -// message: 'Please enter the correct code', -// }); -// } -// -// return; -// } catch (e: any) { -// console.log('Internal Server Error:', e.message); -// -// res.status(500).send({ -// error: 'Internal Server Error', -// message: 'Please try again later', -// }); -// return; -// } -// } -// -// public static async verifyMFA(req: AuthenticatedRequest, res: Response) { -// if (!req.user) { -// console.log('Unauthorized'); -// -// res -// .status(401) -// .send({ error: 'Unauthorized', message: 'User must be authenticated' }); -// return; -// } -// let mfaToken: MFAToken; -// try { -// mfaToken = mfaTokenSchema.parse(req.body.token); -// } catch (_) { -// console.log('Invalid token'); -// -// res.status(400).send({ -// error: 'Invalid token', -// message: 'Token must be a 6 digit number', -// }); -// return; -// } -// const db = new DatabaseService(); -// const mfa = new MFAService(db); -// try { -// const confirmed = await mfa.verifyMFA(req.user.id, mfaToken); -// -// // TODO: update this to be integrated with authentication instead of just -// // returning true/false -// -// if (confirmed) { -// console.log('MFA code correct'); -// -// res.status(200).send(); -// return; -// } else { -// console.log('MFA code incorrect'); -// res.status(400).send({ -// error: 'Incorrect Code', -// message: 'Please enter the correct code', -// }); -// return; -// } -// } catch (e: any) { -// console.log('Internal Server Error:', e.message); -// res.status(500).send({ -// error: 'Internal Server Error', -// message: e.message, -// }); -// return; -// } -// } -// -// public static async testRoute(req: AuthenticatedRequest, res: Response) { -// const userId = req.params.id; -// -// const db = new DatabaseService(); -// const mfa = new MFAService(db); -// -// const result = await db.userRepository.getUserMFAformattedKey( -// userId.toString(), -// ); -// -// if (!result) { -// res.status(404).send('User not found'); -// return; -// } -// -// res.status(200).send(result); -// return; -// } -//} diff --git a/api/src/middleware/auth.ts b/api/src/middleware/auth.ts index 27031c2..26368da 100644 --- a/api/src/middleware/auth.ts +++ b/api/src/middleware/auth.ts @@ -55,7 +55,30 @@ export const parseAuth = async ( } } - await AuthController.refresh(req, res); + // check if refresh token exists + const refreshToken: string | undefined = req.cookies['refresh-token'] as + | string + | undefined; + + if (refreshToken) { + const ts = new TokenService(); + const { valid, payload } = await ts.verifyToken(refreshToken, true); + + if (valid && payload!.type === tokenTypeSchema.enum.REFRESH) { + req.refreshToken = refreshToken; + } + } + + // auto refresh + // if access token is invalid (possibly expired) or expiring soon (within 5 minutes) + if ( + (!req.accessTokenPayload || + req.accessTokenPayload.exp - Date.now() / 1000 < 300) && + req.refreshToken !== undefined && + req.deviceId !== undefined + ) { + await AuthController.refresh(req, res); + } next(); } catch (e) { diff --git a/api/src/schemas/auth/auth.ts b/api/src/schemas/auth/auth.ts index 571e1db..d6a04d6 100644 --- a/api/src/schemas/auth/auth.ts +++ b/api/src/schemas/auth/auth.ts @@ -7,6 +7,7 @@ import { emailSchema } from './user'; export interface AuthenticatedRequest extends Request { user?: AccessTokenUser | undefined; accessTokenPayload?: AccessTokenPayload | undefined; + refreshToken?: string | undefined; deviceId?: string | undefined; tokensRefreshed?: boolean | undefined; } From df118cac0841854e3c57f90cb201cdce3dcc19cb Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Tue, 18 Mar 2025 21:11:49 +0400 Subject: [PATCH 19/25] added a script to generate a jwe encryption key --- api/package.json | 1 + api/src/generate-jwe-encryption-key.ts | 30 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 api/src/generate-jwe-encryption-key.ts diff --git a/api/package.json b/api/package.json index bf28e59..7603c7d 100644 --- a/api/package.json +++ b/api/package.json @@ -8,6 +8,7 @@ "dev": "nodemon --exec ts-node src/index.ts", "dev:configure-db": "ts-node src/configure-db.ts", "configure-db": "node --no-assertions dist/configure-db.js", + "generate-jwe-key": "ts-node src/generate-jwe-encryption-key.ts", "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage", diff --git a/api/src/generate-jwe-encryption-key.ts b/api/src/generate-jwe-encryption-key.ts new file mode 100644 index 0000000..a399f15 --- /dev/null +++ b/api/src/generate-jwe-encryption-key.ts @@ -0,0 +1,30 @@ +import crypto from 'crypto'; + +/** + * Generates a cryptographically secure random 256-bit key for JWE encryption + * and returns it as a Base64URL encoded string (the format used in JWE) + * + * @returns {string} Base64URL encoded 256-bit encryption key + */ +export function generateJweEncryptionKey(): string { + // Generate 32 bytes (256 bits) of random data + const key = crypto.randomBytes(32); + + // Convert to Base64URL encoding (Base64 with URL-safe characters) + // This replaces '+' with '-', '/' with '_', and removes padding '=' + const base64Key = key + .toString('base64') + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=+$/, ''); + + return base64Key; +} + +// When this script is run directly, generate and log a new key +if (require.main === module) { + const encryptionKey = generateJweEncryptionKey(); + console.log('Generated 256-bit JWE Encryption Key:'); + console.log(encryptionKey); + console.log('\nStore this key securely in your environment variables.'); +} From 8c2ae9c19424e879606ff1517a946a136b9ec4a5 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Tue, 18 Mar 2025 21:37:04 +0400 Subject: [PATCH 20/25] updated auth controller to return the mfa formatted key where it shouldve but wasnt before --- api/src/controllers/auth.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index 92be21f..b4964c4 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -130,7 +130,11 @@ export class AuthController { const as = new AuthService(); const { userId, formattedKey } = await as.registerUser(data); - res.status(201).send({ userId, formattedKey }); + const mfa = new MFAService(); + const mfaQRUri = mfa.generateMFAUri(formattedKey, data.email); + res + .status(201) + .send({ userId, mfaFormattedKey: formattedKey, mfaQRUri }); return; }, (e) => { @@ -242,7 +246,11 @@ export class AuthController { session.mfaFormattedKey, data.email, ); - res.status(200).send({ Ms: `0x${Ms.toString(16)}`, mfaQRUri }); + res.status(200).send({ + Ms: `0x${Ms.toString(16)}`, + mfaFormattedKey: session.mfaFormattedKey, + mfaQRUri, + }); return; } }, From da58824eb656986bd5ea53a3fda30d8dcc079a9d Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Tue, 18 Mar 2025 21:47:38 +0400 Subject: [PATCH 21/25] updated register route to return an mfa token --- api/src/controllers/auth.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/api/src/controllers/auth.ts b/api/src/controllers/auth.ts index b4964c4..b5f3ad7 100644 --- a/api/src/controllers/auth.ts +++ b/api/src/controllers/auth.ts @@ -132,6 +132,13 @@ export class AuthController { const { userId, formattedKey } = await as.registerUser(data); const mfa = new MFAService(); const mfaQRUri = mfa.generateMFAUri(formattedKey, data.email); + const ts = new TokenService(); + const mfaToken = await ts.createMFAToken( + userId.toString(), + req.deviceId!, + formattedKey, + ); + this.writeMFACookie(res, mfaToken); res .status(201) .send({ userId, mfaFormattedKey: formattedKey, mfaQRUri }); From fe727dcf24d80b04aeca596b9394ac7b9f991ada Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Wed, 19 Mar 2025 13:28:30 +0400 Subject: [PATCH 22/25] updated register return --- app/lib/services/auth.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/lib/services/auth.dart b/app/lib/services/auth.dart index 1c67b24..bb7e4c5 100644 --- a/app/lib/services/auth.dart +++ b/app/lib/services/auth.dart @@ -12,7 +12,7 @@ class AuthService { static String? refreshToken; static String? idToken; - Future<({String userId, String mfaFormattedKey})?> register( + Future<({String mfaFormattedKey, String mfaQRUri})?> register( String email, String password, {DateTime? dob, String? sex}) async { try { @@ -39,9 +39,15 @@ class AuthService { // get json body final responseBody = jsonDecode(response.body) as Map; try { - final userId = responseBody['userId'] as String; - final mfaFormattedKey = responseBody['formattedKey'] as String; - return (userId: userId, mfaFormattedKey: mfaFormattedKey); + //final userId = responseBody['userId'] as String; + final mfaFormattedKey = responseBody['mfaFormattedKey'] as String?; + final mfaQRUri = responseBody['mfaQRUri'] as String?; + if (mfaFormattedKey == null || mfaQRUri == null) { + print('Error registering: MFA key or QR URI not found'); + return null; + } + + return (mfaQRUri: mfaQRUri, mfaFormattedKey: mfaFormattedKey); } catch (e) { print('Error getting body: $e'); } From 664fb4de777ec6771c71780dfba329f341ff31d9 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Wed, 19 Mar 2025 16:05:23 +0400 Subject: [PATCH 23/25] fix --- api/src/services/auth/auth.ts | 9 + api/src/services/auth/mfa.ts | 51 +----- api/src/services/auth/srp-debug.ts | 266 ----------------------------- api/src/services/auth/token.ts | 8 + api/src/services/household.ts | 10 ++ 5 files changed, 28 insertions(+), 316 deletions(-) delete mode 100644 api/src/services/auth/srp-debug.ts diff --git a/api/src/services/auth/auth.ts b/api/src/services/auth/auth.ts index b6b402b..bbb8603 100644 --- a/api/src/services/auth/auth.ts +++ b/api/src/services/auth/auth.ts @@ -43,6 +43,7 @@ export class AuthService { public async registerUser( data: RegisterData, ): Promise<{ userId: ObjectIdOrString; formattedKey: MFAFormattedKey }> { + await this.db.connect(); // check user doesn't already exist const userExists = await this.db.userRepository.userExistsEmail(data.email); if (userExists) { @@ -66,6 +67,7 @@ export class AuthService { public async initiateAuthSession( email: Email, ): Promise<{ salt: string; B: bigint }> { + await this.db.connect(); // get the user's SRP credentiails const { userId, @@ -110,6 +112,7 @@ export class AuthService { * @throws An {@link AuthSessionError} if the session is expired or does not exist */ public async getAuthSession(email: Email): Promise { + await this.db.connect(); const jsonSession: SRPJSONSession | undefined = await this.db.srpSessionRepository.getSRPSession(email); @@ -125,6 +128,7 @@ export class AuthService { * @returns */ public async deleteAuthSession(email: Email): Promise { + await this.db.connect(); return await this.db.srpSessionRepository.deleteSRPSession(email); } @@ -163,6 +167,7 @@ export class AuthService { * @returns true if the email is registered, false otherwise */ public async userExistsEmail(email: Email): Promise { + await this.db.connect(); return await this.db.userRepository.userExistsEmail(email); } @@ -172,6 +177,7 @@ export class AuthService { * @returns true if the user exists, false otherwise */ public async userExistsId(userId: string): Promise { + await this.db.connect(); return await this.db.userRepository.userExists(userId); } @@ -184,6 +190,7 @@ export class AuthService { * @throws An IncorrectMFATokenError if the code is incorrect */ public async confirmUserMFA(userId: string, code: MFACode) { + await this.db.connect(); const userMFA = await this.db.userRepository.getUserMFA(userId); if (userMFA.confirmed) { throw new MFAError(MFAErrorType.MFA_ALREADY_CONFIRMED); @@ -203,6 +210,7 @@ export class AuthService { * @returns The user */ public async getUserById(userId: ObjectIdOrString): Promise { + await this.db.connect(); return await this.db.userRepository.getUserById(userId); } @@ -217,6 +225,7 @@ export class AuthService { userId: ObjectIdOrString, code: MFACode, ): Promise { + await this.db.connect(); const mfa = await this.db.userRepository.getUserMFA(userId); if (!mfa.confirmed) { throw new MFAError(MFAErrorType.MFA_NOT_CONFIRMED); diff --git a/api/src/services/auth/mfa.ts b/api/src/services/auth/mfa.ts index 2cfb9e9..831ffb3 100644 --- a/api/src/services/auth/mfa.ts +++ b/api/src/services/auth/mfa.ts @@ -4,11 +4,7 @@ import { Email } from '../../schemas/auth/user'; import { MFAFormattedKey, MFACode } from '../../schemas/auth/auth'; export class MFAService { - private readonly db; - - constructor() { - this.db = new DatabaseService(); - } + constructor() {} /** * Generate a formatted key for MFA @@ -45,49 +41,4 @@ export class MFAService { const result = authenticator.verifyToken(formattedKey, code); return result != null; } - - ///** - // * Finish the users MFA setup by confirming the user has correctly setup MFA - // * @param userId - The id of the user - // * @param token - The token the user entered to confirm they've correctly setup MFA - // * @returns A boolean indicating if the code is correct or not, and hence, if the MFA setup was successful - // * @throws Error if the user does not exist - // * @throws Error if the user did not setup MFA - // * @throws Error if the user already confirmed MFA - // */ - //public async finishInitMFASetup( - // userId: string, - // token: MFAToken, - //): Promise { - // if (!(await this.db.userRepository.userExists(userId))) { - // throw new Error('User does not exist'); - // } - // const userMFA = await this.db.userRepository.getUserMFAformattedKey(userId); - // if (!userMFA || !userMFA.formattedKey) { - // throw new Error('User did not setup MFA'); - // } - // if (userMFA.confirmed) { - // throw new Error('User already confirmed MFA'); - // } - // if (!this.verifyToken(userMFA.formattedKey, token)) { - // return false; - // } - // await this.db.userRepository.confirmUserMFA(userId); - // return true; - //} - - ///** - // * Verify the user's MFA token. - // * @param userId - The user's id - // * @param token - The token the user entered (6 digit string) - // * @returns whether the token is correct or not - // * @throws Error if the user did not setup MFA - // */ - //public async verifyMFA(userId: string, token: MFAToken): Promise { - // const userMFA = await this.db.userRepository.getUserMFA(userId); - // if (!userMFA || !userMFA.formattedKey || !userMFA.confirmed) { - // throw new Error('User did not setup MFA'); - // } - // return this.verifyToken(userMFA.formattedKey, token); - //} } diff --git a/api/src/services/auth/srp-debug.ts b/api/src/services/auth/srp-debug.ts deleted file mode 100644 index 2068ff3..0000000 --- a/api/src/services/auth/srp-debug.ts +++ /dev/null @@ -1,266 +0,0 @@ -// /* eslint-disable @typescript-eslint/no-explicit-any */ -// /** -// * SRP Debug utilities for comparing client and server implementations -// * REMOVE THIS FILE IN PRODUCTION -// */ - -// import crypto from 'crypto'; -// import { modPow } from './srp-utils'; - -// export class SRPDebug { -// /** -// * Compare client and server SRP implementations -// */ -// static compareImplementations( -// email: string, -// password: string, -// salt: string, -// a: bigint, -// B: bigint, -// ): any { -// // Server implementation -// const serverImpl = this.serverImplementation(email, password, salt, a, B); - -// // Simulated client implementation -// const clientImpl = this.simulateClientImplementation( -// email, -// password, -// salt, -// a, -// B, -// ); - -// return { -// serverImplementation: { -// A: serverImpl.A.toString(16), -// u: serverImpl.u.toString(16), -// x: serverImpl.x.toString(16), -// S: serverImpl.S.toString(16), -// K: serverImpl.K.toString(16), -// M: serverImpl.M.toString(16), -// }, -// clientImplementation: { -// A: clientImpl.A.toString(16), -// u: clientImpl.u.toString(16), -// x: clientImpl.x.toString(16), -// S: clientImpl.S.toString(16), -// K: clientImpl.K.toString(16), -// M: clientImpl.M.toString(16), -// }, -// differences: { -// A: serverImpl.A === clientImpl.A ? 'Match' : 'Different', -// u: serverImpl.u === clientImpl.u ? 'Match' : 'Different', -// x: serverImpl.x === clientImpl.x ? 'Match' : 'Different', -// S: serverImpl.S === clientImpl.S ? 'Match' : 'Different', -// K: serverImpl.K === clientImpl.K ? 'Match' : 'Different', -// M: serverImpl.M === clientImpl.M ? 'Match' : 'Different', -// }, -// }; -// } - -// /** -// * Server implementation of SRP key generation -// */ -// private static serverImplementation( -// email: string, -// password: string, -// salt: string, -// a: bigint, -// B: bigint, -// ): { -// A: bigint; -// u: bigint; -// x: bigint; -// S: bigint; -// K: bigint; -// M: bigint; -// } { -// // A = g^a % N -// const A = modPow(this.g, a, this.N); - -// // u = H(A | B) -// const u = this.calculateU(A, B); - -// // x = H(salt | H(email:password)) -// const x = this.calculateX(email, password, salt); - -// // S = (B - k*g^x)^(a + u*x) % N -// const gx = modPow(this.g, x, this.N); -// const kgx = (this.k * gx) % this.N; -// let base = (B - kgx) % this.N; -// if (base < BigInt(0)) base += this.N; -// const exponent = (a + u * x) % (this.N - BigInt(1)); -// const S = modPow(base, exponent, this.N); - -// // K = H(S) -// const K = this.hash(S.toString(16)); - -// // M = H(H(N)^H(g) | H(email) | salt | A | B | K) -// const M = this.calculateClientProof(email, salt, A, B, K); - -// return { A, u, x, S, K, M }; -// } - -// /** -// * Simulated client implementation of SRP key generation -// */ -// private static simulateClientImplementation( -// email: string, -// password: string, -// salt: string, -// a: bigint, -// B: bigint, -// ): { -// A: bigint; -// u: bigint; -// x: bigint; -// S: bigint; -// K: bigint; -// M: bigint; -// } { -// // 1. Calculate A = g^a % N -// const A = modPow(this.g, a, this.N); - -// // 2. Calculate u = H(A | B) -// const u = this.calculateU(A, B); - -// // 3. Calculate x = H(salt | H(email:password)) -// // Modified to match the Dart implementation -// const identity = this.hashString(`${email}:${password}`); - -// // Concatenate hex salt with identity hash -// const saltBuffer = Buffer.from(salt, 'hex'); -// const identityBuffer = Buffer.from(identity, 'hex'); -// const saltedIdentity = Buffer.concat([saltBuffer, identityBuffer]); - -// const x = BigInt('0x' + this.hashString(saltedIdentity.toString('hex'))); - -// // 4. Calculate S = (B - k*g^x)^(a + u*x) % N -// const gx = modPow(this.g, x, this.N); -// const kgx = (this.k * gx) % this.N; -// let base = (B - kgx) % this.N; -// if (base < BigInt(0)) base += this.N; -// const exponent = (a + u * x) % (this.N - BigInt(1)); -// const S = modPow(base, exponent, this.N); - -// // 5. Calculate K = H(S) -// const K = BigInt('0x' + this.hashString(S.toString(16))); - -// // 6. Calculate M = H(H(N) XOR H(g) | H(email) | salt | A | B | K) -// // This is where implementations might differ the most -// const HN = this.hash(this.N.toString(16)); -// const Hg = this.hash(this.g.toString(16)); - -// const hnBuffer = Buffer.from(HN.toString(16).padStart(64, '0'), 'hex'); -// const hgBuffer = Buffer.from(Hg.toString(16).padStart(64, '0'), 'hex'); -// const xorBuffer = Buffer.alloc(hnBuffer.length); - -// for (let i = 0; i < hnBuffer.length; i++) { -// xorBuffer[i] = hnBuffer[i] ^ (i < hgBuffer.length ? hgBuffer[i] : 0); -// } - -// const Hemail = this.hashString(email); - -// const concatString = -// xorBuffer.toString('hex') + -// Hemail + -// salt + -// A.toString(16) + -// B.toString(16) + -// K.toString(16); - -// const M = BigInt('0x' + this.hashString(concatString)); - -// return { A, u, x, S, K, M }; -// } - -// /** -// * Calculate the parameter x = H(salt | H(email | ':' | password)) -// */ -// private static calculateX( -// email: string, -// password: string, -// salt: string, -// ): bigint { -// // First hash: H(email | ':' | password) -// const identity = this.hashString(`${email}:${password}`); - -// // Concatenate salt with identity hash -// const saltBuffer = Buffer.from(salt, 'hex'); -// const identityBuffer = Buffer.from(identity, 'hex'); -// const saltedIdentity = Buffer.concat([saltBuffer, identityBuffer]); - -// // Final hash -// return BigInt('0x' + this.hashString(saltedIdentity.toString('hex'))); -// } - -// /** -// * Calculate u = H(A | B) -// */ -// private static calculateU(A: bigint, B: bigint): bigint { -// const concatenated = A.toString(16) + B.toString(16); -// return BigInt('0x' + this.hashString(concatenated)); -// } - -// /** -// * Calculate client proof -// */ -// private static calculateClientProof( -// email: string, -// salt: string, -// A: bigint, -// B: bigint, -// K: bigint, -// ): bigint { -// // Hash N and g -// const HN = this.hash(this.N.toString(16)); -// const Hg = this.hash(this.g.toString(16)); - -// // XOR operation -// const hnBuffer = Buffer.from(HN.toString(16).padStart(64, '0'), 'hex'); -// const hgBuffer = Buffer.from(Hg.toString(16).padStart(64, '0'), 'hex'); -// const xorBuffer = Buffer.alloc(hnBuffer.length); - -// for (let i = 0; i < hnBuffer.length; i++) { -// xorBuffer[i] = hnBuffer[i] ^ (i < hgBuffer.length ? hgBuffer[i] : 0); -// } - -// const Hemail = this.hashString(email); - -// const concatString = -// xorBuffer.toString('hex') + -// Hemail + -// salt + -// A.toString(16) + -// B.toString(16) + -// K.toString(16); - -// return BigInt('0x' + this.hashString(concatString)); -// } - -// /** -// * Hash a string using SHA-256 -// */ -// private static hashString(input: string): string { -// return crypto.createHash('sha256').update(input).digest('hex'); -// } - -// /** -// * Hash a value to BigInt -// */ -// private static hash(input: string): bigint { -// return BigInt('0x' + this.hashString(input)); -// } - -// // Constants -// private static readonly SRP_N_HEX = -// `AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F 9E4AFF73` -// .trim() -// .replace(/[\s\r\n]+/g, ''); -// private static readonly SRP_GENERATOR = 2; -// private static readonly SRP_K = 3; - -// private static readonly N = BigInt('0x' + this.SRP_N_HEX); -// private static readonly g = BigInt(this.SRP_GENERATOR); -// private static readonly k = BigInt(this.SRP_K); -// } diff --git a/api/src/services/auth/token.ts b/api/src/services/auth/token.ts index 5bec991..d01010f 100644 --- a/api/src/services/auth/token.ts +++ b/api/src/services/auth/token.ts @@ -216,6 +216,7 @@ export class TokenService { secretId: '1', // TODO: rotate keys and store in DB }; + await this.db.connect(); // check user exists const userExists = await this.db.userRepository.userExists(userId); @@ -400,6 +401,7 @@ export class TokenService { const payload = this.parseToken(result); + await this.db.connect(); // check token generation ID isn't blacklisted const blacklisted = await this.db.tokenRepository.isTokenGenerationIdBlacklisted( @@ -476,6 +478,7 @@ export class TokenService { // // get user's email + await this.db.connect(); const userDoc = await this.db.userRepository.getUserById( oldRefreshPayload.userId, ); @@ -568,6 +571,7 @@ export class TokenService { userId: ObjectIdOrString, deviceId: string, ) { + await this.db.connect(); return await this.db.tokenRepository.changeUserTokenGenerationId( userId, deviceId, @@ -587,6 +591,7 @@ export class TokenService { * @param userId - The user for whom to revoke all tokens */ public async revokeAllTokensImmediately(userId: ObjectIdOrString) { + await this.db.connect(); // add to blacklist await this.db.tokenRepository.blacklistTokenGenerationIds(userId); } @@ -621,6 +626,7 @@ export class TokenService { if (!exp) { throw new InvalidTokenError('Token has no expiry time'); } + await this.db.connect(); // Blacklist the token await this.db.accessBlacklistRepository.blacklistAccessToken( @@ -716,6 +722,7 @@ export class TokenService { throw new InvalidTokenError('Token is not an MFA token'); } + await this.db.connect(); // check token generation ID isn't blacklisted const blacklisted = await this.db.mfaBlacklistRepository.isMFATokenBlacklisted(data.jti); @@ -738,6 +745,7 @@ export class TokenService { if (!exp) { throw new InvalidTokenError('Token has no expiry time'); } + await this.db.connect(); await this.db.mfaBlacklistRepository.blacklistMFA(token.jti, exp); } diff --git a/api/src/services/household.ts b/api/src/services/household.ts index 2860555..63e045f 100644 --- a/api/src/services/household.ts +++ b/api/src/services/household.ts @@ -15,6 +15,7 @@ export class HouseholdService { public async createHousehold( data: Omit, ): Promise { + await this.db.connect(); return this.db.householdRepository.createHousehold(data); } @@ -24,6 +25,7 @@ export class HouseholdService { * @returns */ public async getHousehold(id: string): Promise { + await this.db.connect(); return this.db.householdRepository.getHouseholdById(id); } public async addMember( @@ -31,6 +33,7 @@ export class HouseholdService { memberId: string, ownerId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.addMember( householdId, memberId, @@ -43,6 +46,7 @@ export class HouseholdService { memberId: string, ownerId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.removeMember( householdId, memberId, @@ -54,6 +58,7 @@ export class HouseholdService { response: boolean, userId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.processInviteResponse( inviteId, response, @@ -64,6 +69,7 @@ export class HouseholdService { householdId: string, ownerId: string, ): Promise { + await this.db.connect(); await this.db.householdRepository.deleteHousehold(householdId, ownerId); } public async addRoom( @@ -71,6 +77,7 @@ export class HouseholdService { roomData: HouseholdRoom, ownerId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.addRoom(householdId, roomData, ownerId); } public async removeRoom( @@ -78,6 +85,7 @@ export class HouseholdService { roomId: string, ownerId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.removeRoom(householdId, roomId, ownerId); } public async changeUserRole( @@ -86,6 +94,7 @@ export class HouseholdService { newRole: HouseholdMember, ownerId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.changeUserRole( householdId, memberId, @@ -99,6 +108,7 @@ export class HouseholdService { action: 'add' | 'remove', ownerId: string, ): Promise { + await this.db.connect(); return this.db.householdRepository.manageRooms( householdId, roomId, From ea4ba48e3e00ff6a074c8ad43979e6cca1e08f39 Mon Sep 17 00:00:00 2001 From: Hady Mashhour Date: Wed, 19 Mar 2025 16:06:09 +0400 Subject: [PATCH 24/25] . --- api/src/services/auth/mfa.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/api/src/services/auth/mfa.ts b/api/src/services/auth/mfa.ts index 831ffb3..ef62329 100644 --- a/api/src/services/auth/mfa.ts +++ b/api/src/services/auth/mfa.ts @@ -1,5 +1,4 @@ import * as authenticator from 'authenticator'; -import { DatabaseService } from '../db/db'; import { Email } from '../../schemas/auth/user'; import { MFAFormattedKey, MFACode } from '../../schemas/auth/auth'; From ef39142f8149c03c1459bea50d6d4918b3837dd9 Mon Sep 17 00:00:00 2001 From: Maksim Muzychenko Date: Thu, 27 Mar 2025 18:52:34 +0400 Subject: [PATCH 25/25] Marketing website done --- marketingwebsite/css/styles.css | 937 ++++++++++++++++++ marketingwebsite/images/Devices.jpeg | Bin 0 -> 125194 bytes marketingwebsite/images/IoT.jpeg | Bin 0 -> 130714 bytes marketingwebsite/images/dashboardImg.jpeg | Bin 0 -> 171787 bytes .../images/facebook-svgrepo-com.svg | 18 + .../images/instagram-svgrepo-com.svg | 6 + .../images/lamp-light-svgrepo-com.svg | 4 + .../images/lightning-svgrepo-com.svg | 2 + marketingwebsite/images/logo.png | Bin 0 -> 20996 bytes marketingwebsite/images/modern-house.png | Bin 0 -> 529465 bytes marketingwebsite/images/schedules.jpeg | Bin 0 -> 377897 bytes .../images/twitter-154-svgrepo-com.svg | 19 + marketingwebsite/index.html | 420 ++++++++ marketingwebsite/js/main.js | 0 14 files changed, 1406 insertions(+) create mode 100644 marketingwebsite/css/styles.css create mode 100644 marketingwebsite/images/Devices.jpeg create mode 100644 marketingwebsite/images/IoT.jpeg create mode 100644 marketingwebsite/images/dashboardImg.jpeg create mode 100644 marketingwebsite/images/facebook-svgrepo-com.svg create mode 100644 marketingwebsite/images/instagram-svgrepo-com.svg create mode 100644 marketingwebsite/images/lamp-light-svgrepo-com.svg create mode 100644 marketingwebsite/images/lightning-svgrepo-com.svg create mode 100644 marketingwebsite/images/logo.png create mode 100644 marketingwebsite/images/modern-house.png create mode 100644 marketingwebsite/images/schedules.jpeg create mode 100644 marketingwebsite/images/twitter-154-svgrepo-com.svg create mode 100644 marketingwebsite/index.html create mode 100644 marketingwebsite/js/main.js diff --git a/marketingwebsite/css/styles.css b/marketingwebsite/css/styles.css new file mode 100644 index 0000000..6bb3611 --- /dev/null +++ b/marketingwebsite/css/styles.css @@ -0,0 +1,937 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Helvetica Neue', Arial, sans-serif; +} + +body { + background-color: #fff; + color: #000; + line-height: 1.6; +} + +/* Layout */ +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; +} + +/* Header */ +header { + padding: 30px 0; + border-bottom: 1px solid #fff; + width: 100%; + position: relative; +} + +.header-content { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 15px; +} + +.header-logo { + display: flex; + align-items: center; + margin-left: -110px; +} + +.header-logo img { + height: 50px; + margin-right: 10px; +} + +.header-button { + padding: 10px 20px; + font-size: 16px; + font-weight: 600; + margin-right: -10px; + /* Ensure the button maintains consistent size */ + display: inline-block; + min-width: 120px; + text-align: center; +} + +.logo { + font-size: 32px; + font-weight: 700; + letter-spacing: 2px; + color: #000; +} + +/* Hero Section - Updated vertical alignment */ +.hero { + min-height: 70vh; /* Reduced from 80vh */ + display: flex; + align-items: center; + position: relative; + overflow: hidden; + margin-top: 20px; /* Reduced from 50px to bring closer to header */ +} + +/* Hero container layout adjustments - push slideshow further right */ +.hero .container { + width: 100%; + max-width: 1200px; + display: flex; + flex-direction: row; + justify-content: space-between; /* Ensure space between elements */ + align-items: flex-start; /* Change from center to flex-start for top alignment */ + padding: 0 0 0 20px; /* Remove right padding, keep left padding */ + gap: 0; /* Remove the gap property */ +} + +/* Hero Section - Refined vertical alignment */ +.hero-content { + width: 35%; /* Reduced width to move text more to the left */ + z-index: 2; + text-align: left; + max-width: 380px; /* Slightly reduce max-width */ + padding-right: 30px; /* Add padding to right side */ + padding-top: 40px; /* Reduced from 60px to move text up */ + margin-left: 0; /* Ensure alignment to the left */ + padding-left: 0; /* Remove any left padding */ + margin-right: auto; /* Push content to the left */ +} + +.hero h1 { + font-size: 60px; + font-weight: 800; + margin-bottom: 20px; + line-height: 1.1; +} + +.hero p { + font-size: 20px; + margin-bottom: 30px; + opacity: 0.9; +} + +/* Image/slideshow positioning - move further to the right */ +.hero-image { + width: 60%; /* Increase width from 55% to 60% */ + display: flex; + justify-content: flex-end; /* Changed from center to flex-end to push slideshow to the right */ + align-items: center; /* Ensure vertical centering */ + position: relative; + background: transparent; + margin-top: -10px; /* Changed from -40px to move slideshow down */ + padding-left: 60px; /* Increase left padding to push content right */ + margin-left: auto; /* Push to the right */ + margin-right: -40px; /* Add negative right margin to push past container bounds */ +} + +.device-mockup { + width: 300px; + height: 600px; + border: 8px solid #000; + border-radius: 30px; + position: relative; + overflow: hidden; + box-shadow: 0 0 50px rgba(0, 0, 0, 0.2); +} + +.device-screen { + width: 100%; + height: 100%; + background: linear-gradient(135deg, #111, #000); + padding: 20px; + display: flex; + flex-direction: column; +} + +.app-icon { + width: 50px; + height: 50px; + background: #fff; + border: 1px solid rgba(255, 255, 255, 0.3); + border-radius: 12px; + margin-bottom: 20px; +} + +.app-menu { + display: flex; + flex-direction: column; + gap: 20px; + margin-top: 20px; +} + +.menu-item { + background: rgba(255, 255, 255, 0.1); + padding: 15px; + border-radius: 10px; + display: flex; + align-items: center; + cursor: pointer; + transition: background 0.3s ease; +} + +.menu-item:hover { + background: rgba(255, 255, 255, 0.2); +} + +.menu-icon { + width: 25px; + height: 25px; + background: #fff; + border-radius: 5px; + margin-right: 15px; +} + +/* Features Section */ +.features { + padding: 100px 0; +} + +.section-title { + font-size: 40px; + margin-bottom: 60px; + text-align: center; +} + +.features-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 40px; +} + +.feature-card { + background: rgba(0, 0, 0, 0.05); + padding: 40px 30px; + border-radius: 15px; + transition: transform 0.3s ease, background 0.3s ease; +} + +.feature-card:hover { + transform: translateY(-5px); + background: rgba(0, 0, 0, 0.1); +} + +.feature-icon { + width: 60px; + height: 60px; + background: #000; + border-radius: 50%; + margin-bottom: 20px; + display: flex; + align-items: center; + justify-content: center; +} + +.feature-icon svg { + width: 30px; + height: 30px; + stroke: #fff; +} + +.feature-title { + font-size: 24px; + margin-bottom: 15px; +} + +.feature-description { + opacity: 0.8; +} + +/* CTA Section */ +.cta { + padding: 100px 0; + text-align: center; + background: #fff; +} + +.cta h2 { + font-size: 48px; + margin-bottom: 30px; +} + +.cta p { + font-size: 20px; + max-width: 600px; + margin: 0 auto 40px; + opacity: 0.9; +} + +.button { + display: inline-block; + background: #000; + color: #fff; + padding: 15px 40px; + border-radius: 30px; + font-size: 18px; + font-weight: 600; + text-decoration: none; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.button:hover { + transform: translateY(-2px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); +} + +/* Footer */ +footer { + padding: 50px 0; + text-align: center; + border-top: 1px solid #fff; +} + +.social-links { + display: flex; + justify-content: center; + gap: 20px; + margin-bottom: 30px; +} + +.social-link { + width: 40px; + height: 40px; + background: rgba(0, 0, 0, 0.1); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + transition: background 0.3s ease; +} + +.social-link:hover { + background: rgba(0, 0, 0, 0.3); +} + +.copyright { + opacity: 0.6; + font-size: 14px; +} + +.highlight { + color: #000; /* Same as regular text */ + font-weight: 900; /* Extra bold */ + letter-spacing: 1px; /* Slight letter spacing for emphasis */ +} + +/* Responsive Adjustments */ +@media (max-width: 992px) { + .hero { + flex-direction: column; + height: auto; + padding: 50px 0; + } + + .hero-content, .hero-image { + width: 100%; + position: relative; + text-align: center; + max-width: 100%; + } + + .hero-content { + padding: 0 20px; + margin: 0 auto 30px; + } + + .hero h1 { + font-size: 48px; + } + + .hero p { + font-size: 18px; + } + + .hero-image { + height: auto; + margin-top: 20px; + } + + .features-grid { + grid-template-columns: repeat(2, 1fr); + } + + .extreme-left { + margin-left: 0 !important; + } + + .slideshow-container { + width: 90%; + aspect-ratio: 3/2; + height: auto; + } +} + +@media (max-width: 768px) { + .hero h1 { + font-size: 36px; + } + + .hero p { + font-size: 16px; + } + + .features-grid { + grid-template-columns: 1fr; + } + + .desktop-only { + display: none; + } + + .slideshow-container { + width: 95%; + aspect-ratio: 1/1; + } + + .slide img { + max-width: 100%; + max-height: 100%; + } +} + +@media (max-width: 480px) { + .hero h1 { + font-size: 32px; + } + + .hero-content { + padding: 0 15px; + } + + .slideshow-container { + aspect-ratio: 4/5; + } +} + +/* Animation Styles */ +@keyframes fadeIn { + from { opacity: 0; transform: translateY(20px); } + to { opacity: 1; transform: translateY(0); } +} + +.animated { + animation: fadeIn 0.8s ease forwards; +} + +.delay-1 { animation-delay: 0.2s; } +.delay-2 { animation-delay: 0.4s; } +.delay-3 { animation-delay: 0.6s; } + +/* Comparison Table */ +.comparison { + padding: 100px 0; + background: #f9f9f9; +} + +.table-container { + overflow-x: auto; + margin-top: 40px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); + border-radius: 8px; +} + +.comparison-table { + width: 100%; + border-collapse: collapse; + background: #fff; + overflow: hidden; +} + +.comparison-table th, +.comparison-table td { + padding: 20px; + text-align: center; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.comparison-table th { + background: #000; + color: #fff; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 14px; +} + +.comparison-table th:first-child { + text-align: left; +} + +.comparison-table td:first-child { + text-align: left; + font-weight: 500; +} + +.comparison-table tr:hover { + background: rgba(0, 0, 0, 0.02); +} + +.check { + color: #000; + font-weight: bold; + font-size: 18px; +} + +.cross { + color: #999; + font-weight: bold; + font-size: 18px; +} + +.limited { + color: #777; + font-style: italic; + font-size: 16px; +} + +@media (max-width: 768px) { + .comparison-table th, + .comparison-table td { + padding: 12px 10px; + font-size: 14px; + } + + .check, .cross { + font-size: 16px; + } +} + +/* About section styles */ +.about { + padding: 80px 0; + background-color: #f8f9fa; +} + +.about-content { + display: flex; + align-items: center; + gap: 40px; +} + +.about-text { + flex: 1; +} + +.about-image { + flex: 1; +} + +/* Responsive adjustments */ +@media (max-width: 768px) { + .about-content { + flex-direction: column; + } + + .about-text, .about-image { + width: 100%; + } +} + +/* Slideshow styles */ +.slideshow-container { + width: 85%; + max-width: 600px; + aspect-ratio: 4/3; + position: relative; + overflow: hidden; + border-radius: 12px; + box-shadow: 0 5px 25px rgba(0, 0, 0, 0.15); + background-color: #f8f9fa; + margin: 0 auto; + margin-left: auto; /* Ensure it stays at the right */ + width: 100%; /* Full width of parent */ + transform: translateX(20px); /* Move 20px to the right */ + margin-right: -20px; /* Move container edge past parent boundaries */ +} + +.slideshow-slides { + width: 100%; + height: 100%; + position: relative; + display: flex; + justify-content: center; + align-items: center; +} + +.slide { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + transition: opacity 0.8s ease; + display: flex; + justify-content: center; + align-items: center; + padding: 20px; /* Add padding around the slide content */ +} + +.slide.active { + opacity: 1; +} + +.slide img { + width: auto; + height: auto; + max-width: 95%; + max-height: 95%; + object-fit: contain; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + /* For portrait images, prioritize height over width */ + display: block; + margin: 0 auto; +} + +.slide-caption { + position: absolute; + bottom: 20px; + left: 50%; + transform: translateX(-50%); + background: rgba(0, 0, 0, 0.7); + color: white; + padding: 10px 20px; + border-radius: 5px; + font-size: 16px; + font-weight: 500; + z-index: 2; +} + +/* Slideshow controls - better positioning */ +.slideshow-controls { + position: relative; + display: flex; + justify-content: center; + margin-top: 15px; + gap: 10px; + padding: 8px 12px; + z-index: 5; +} + +/* Improved dot styling */ +.slideshow-dot { + cursor: pointer; + height: 12px; + width: 12px; + border-radius: 50%; + display: inline-block; + background-color: #d0d0d0; + opacity: 0.7; + transition: all 0.3s ease; + border: 1px solid rgba(0, 0, 0, 0.1); + margin: 0 5px; +} + +.slideshow-dot.active { + background-color: #707070; + transform: scale(1.2); + opacity: 1; +} + +.slideshow-dot:hover { + background-color: #bbbbbb; +} + +.slideshow-controls { + position: relative; + display: flex; + justify-content: center; + margin-top: 15px; + gap: 10px; + padding: 8px 12px; + z-index: 10; +} + +.slideshow-dot { + width: 12px; + height: 12px; + border-radius: 50%; + background-color: #d0d0d0; + cursor: pointer; + transition: all 0.3s ease; + border: 1px solid rgba(0, 0, 0, 0.1); + opacity: 0.7; + display: inline-block; +} + +.slideshow-dot.active { + background-color: #707070; + transform: scale(1.2); + opacity: 1; +} + +.slideshow-dot:hover { + background-color: #bbbbbb; +} + +.slideshow-dot.active:hover { + background-color: #333333; +} + +/* Position slideshow nav buttons below the dots */ +.slideshow-nav-buttons { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 15px; + position: relative; + z-index: 5; +} + +@media (max-width: 992px) { + .slideshow-container { + height: 600px; /* Increased from 500px to 600px */ + width: 90%; + } +} + +@media (max-width: 768px) { + .slideshow-container { + height: 500px; /* Increased from 400px to 500px */ + width: 95%; + } +} + +@media (max-width: 480px) { + .slideshow-container { + aspect-ratio: 4/5; + } +} + +/* Extreme positioning - Adjusted */ +.extreme-left { + margin-left: px !important; /* Add negative margin to push text more left */ + padding-left: 0 !important; + position: relative; +} + +@media (min-width: 1200px) { + .extreme-left { + margin-left: -30px !important; /* Increase negative margin on larger screens */ + } +} + +/* Responsive header adjustments */ +@media (max-width: 1200px) { + .header-logo { + margin-left: -60px; + } + + .header-button { + margin-right: -100px; + padding: 10px 20px; + font-size: 16px; + } +} + +@media (max-width: 992px) { + .header-logo { + margin-left: -30px; + } + + .header-button { + margin-right: -30px; + padding: 10px 20px; + font-size: 16px; + } +} + +@media (max-width: 768px) { + .header-logo { + margin-left: 0; + } + + .header-button { + margin-right: 0; + padding: 10px 20px; + font-size: 16px; + min-width: 120px; + } + + .header-logo img { + height: 40px; + } + + .logo { + font-size: 24px; + } + + .header-button { + padding: 8px 16px; + font-size: 14px; + } +} + +@media (max-width: 480px) { + .header-content { + flex-direction: column; + gap: 20px; + text-align: center; + } + + .header-logo { + margin: 0 auto; + } + + .header-button { + margin: 0; + } +} + +/* Slideshow Styles - Unified and fixed */ +.slideshow-container, +.slideshow-slides, +.slide { + background: transparent; + box-shadow: none; +} + +.slideshow-container { + width: 100%; + max-width: 700px; + height: auto; + position: relative; + overflow: hidden; + margin: 0; + border-radius: 12px; + transform: translateY(-5px); /* Changed from -20px to remove upward shift */ + margin-right: 0; /* Align to the right edge */ + margin-left: auto; /* Push to the right */ +} + +.slide img { + width: 100%; + height: auto; + max-height: 600px; + object-fit: contain; + border-radius: 12px; + transition: transform 0.3s ease; +} + +.slide img:hover { + transform: scale(1.02); +} + +.slideshow-controls { + position: relative; + display: flex; + justify-content: center; + margin-top: 15px; + gap: 10px; +} + +.slideshow-dot { + cursor: pointer; + height: 12px; + width: 12px; + border-radius: 50%; + display: inline-block; + background-color: #d0d0d0; /* Light grey for inactive dots */ + opacity: 0.7; + transition: background-color 0.3s ease; +} + +.slideshow-dot.active { + background-color: #707070; /* Darker grey for active dot */ + opacity: 1; +} + +/* Slideshow navigation buttons */ +.slideshow-nav-buttons { + display: flex; + justify-content: center; + gap: 20px; + margin-top: 20px; + margin-bottom: 20px; + position: relative; + z-index: 20; + padding: 10px; +} + +.slide-nav-button { + background-color: #000; + color: #fff; + border: none; + padding: 12px 25px; + border-radius: 30px; + cursor: pointer; + font-size: 16px; + font-weight: 600; + transition: all 0.3s ease; + min-width: 120px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +.slide-nav-button:hover { + background-color: #333; + transform: translateY(-2px); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15); +} + +.slide-nav-button:active { + transform: translateY(0); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +/* Responsive adjustments for buttons */ +@media (max-width: 768px) { + .slideshow-nav-buttons { + gap: 10px; + } + + .slide-nav-button { + padding: 8px 15px; + font-size: 14px; + } +} + +@media (max-width: 480px) { + .slideshow-nav-buttons { + flex-direction: column; + align-items: center; + gap: 10px; + } + + .slide-nav-button { + width: 80%; + } +} + +/* Responsive Adjustments */ +@media (max-width: 1100px) { + .hero .container { + flex-direction: column; + text-align: center; + align-items: center; /* Reset alignment for mobile */ + } + + .hero-content { + width: 100%; + max-width: 600px; + padding-right: 0; + padding-top: 0; /* Remove top padding on mobile */ + padding-bottom: 20px; /* Reduced from 30px */ + margin: 0 auto; + margin-left: auto; /* Reset for mobile */ + } + + .hero-image { + width: 100%; + justify-content: center; /* Center on mobile */ + margin-top: 0; /* Remove negative margin on mobile */ + padding-left: 0; /* Remove left padding on mobile */ + margin-right: 0; /* Reset negative margin on smaller screens */ + } + + .slideshow-container { + max-width: 90%; + margin: 0 auto; + transform: translateX(0); /* Reset transform on smaller screens */ + margin-left: auto; + margin-right: auto; /* Center on mobile */ + } + + .extreme-left { + margin-left: 0 !important; /* Reset negative margin on mobile */ + } +} \ No newline at end of file diff --git a/marketingwebsite/images/Devices.jpeg b/marketingwebsite/images/Devices.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6540fe9cfd848ecf05e23bfeece65155b1b78d42 GIT binary patch literal 125194 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 HTm66vdCgkruIjfP=OjE;w265BlEK* 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 literal 0 HcmV?d00001 diff --git a/marketingwebsite/images/dashboardImg.jpeg b/marketingwebsite/images/dashboardImg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3cfa54845bda6373f6ffc7d83344ee117c474ca9 GIT binary patch literal 171787 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%0A))t#Pyz%#XZ!v2GjnF{%$;**?jIRuhwPo1 z>}2ovTI+dUPwGy0>%-(9V7L3I(q^XnDn#Vi$3oDhPe12b@uTB(a(%C&-x{SQ^k%>r z1>+-dl9qC-sm~8i-ZynVpR6*GbM+y6OK`+BT&?O;*!<1rTWDc)i0FNqmk%3k5?EF@ zXSC$yyr2BL3+@7nmZtX(>|U*XNd7OZ!U7j(aF3u)YxghhY6p zeOG<#5m{cml}&VHi&hbchSR>~RUSbAySljUh!8M7Wq$+A7rkhfWvR*s8O~7=eJ8O9 zFr|5BZ@h6@jsSsS>%A3@-HV%;UFn`q4KxaoC{44^xado;-`c~n^EJonjmY3s2VI50 z%G-)V$1v4QotAmQ96xkgFdP&N1iCe0_!nM}CPhv*E> z*w#;?fs5C>jL&Hl@iNb1Bzj|D5lp9$fw(23arq`>&^LvUdkcci9{AI#kg#$UP2U`= zJb0icIOtA+P@EBk{3~;q_x{y_hoM6>pVw(@a-dIvr7TGzyQJ8AS&WkOfpDN^hzc#c<*`S z+hogE-2;lAqL6}yt~d$?ruxtuP*0<`@Z3ZZhnsuXBVOXUPFGf@617)^vATC;*hiBX zC#WUTv@25kKFQ*IN3=ceJz=VG$$ryTG?W`sAXADCeHVLiF-h}^`*F9PqzL)?=O_I2 zQ(IlFwm7@F`2M<0vv<$X!n#QPXAOuM1*!$b@*!5}eS;E=4LSmrOS0JQaXIW=6Hu@E zpikn_2CKvkv|n0EL54P$X_k6gUckaqLpnuemKuIzilgmj@3*H6tT-fwQ^nq_HQf0l}AMenwr#C$?> zcUi1ihs=o^Q$2SKnSHS(d&6)JmAla#m6%%Ir!o2-wrs#V%sA3JbW;&j?f)%7NuBuW zb8Pd=^a#Zu6ai{%(NkBgBao6b4ud9pa>mv3xB z?U*5|(%K>_aS2Iqj}8;TIhf0A3C!s-!dgHQm9!4jdY8ZWS#@mc{n{Gq%p{|qTHr8J z_Lt^8tI6?dY8B1V#m~eU$u=E8(7WcnX}6gcvKBI|^?hh3Y6&HM_ zd3>TMS-wD~iQ}edBqGT+^SvL7RivM7cuxVQ`iAgf8roG!gt}Do9>HbaP6HPiRz&f$ z`!t^a=5;mDSkLkQSOBc*m!+?t)L68}0ppM%*nd2cM|?O4+m%Ly?nq@P@@Fo1t79w}JqFuL>AV1OXXv|E)4O0Q&#& zvyfX)bAXrE(pAUULl1(RhDTJ|K~)`{Vbw;9*Pi2ioc6yU8yUB01GKTB!RFby2#qOe z7|~qqE&3mK$cQ zxBrYv`Ge|n<;-xU7eCIZ%@+DZzfVGETp-ZaF?-!5&U=kszGh{MTIn*J=?RbSa1PMW z5`02sm^-r%5pR`v?uo&lKq(~WMNN~D|MQwDiHA~!4W5Ay&=Z4-O;LSVYy?d4p(CUd z@Wwv*X@i9QsnYyua6Z%2@e9@8{Q{F5BoQL4!3m2$9iHDo<($Q-pPMKDxcPN9=D9}d z&*%e}CS2KHr5~PK6#4x?WAp`tU77}ULS%T*s{3QT9nGuj@ANChw^`tAVE8ZAY;pL(k1%)X$qWHaKC@pggDPd&Z z`ytHy50+Ppq#DFwJJ#5FRZ&=5+#t)2L4tv0y5Rel)ZYra(u(HQzCgH9`SKo!EKLL#3CZKcaHZ?q$jUzt z{{6xAYEC~CaRJqM4#6ksz#8+FQ2H^z^zM+(-Rz-Is~=qo$U|OLl~8Pehkfw@{@p}n zrtY)1nib+i$*0N(%CYBLDvs&yv1aL|I{Mk#ssQV!uv*{?gV|l_*0XSidB|AqqBJaE zF#OzW&f~_=dJ4kNoTHt}zEk6RU|x(n&B)_h9Ax7dfKz6#7~;kRad=5V>X^8__MKeaAXnu!xN|bC zPpnGJJiH)$Q02?^F&Ii@d{d!#U@nGnj_5U`Yt8KiTnXe5?g9qSUaMqL(e2KPRLAo) zYhSWjN#ZZWVVn?Wz3L;wq6aF(F7kd}5Fnv!5FQ(w(G}6~Ncppat@%m$Sxsoq9i#F4 zu(50Z6BJKFKoo*xOg=n6P@O_q$Z{Frg|SzSsF0meFp*lW2i^B)pSz=+Z;XJen!i{d zGD&4@^OEfMpouA-K?iqYVq%G9PL9m;%&Bb<^l{-*lN;U(1QCz+r94@iuMM_w`yq^b zW`y7uh=BRo#ofg5Sj%Vz{*(9XbzPs-58r$3JNTsmm&WkaJJ#9aT!Z8wtKIbG7EK>3 zne05TO0m^S+^-mO_wqfYkI>VKK|G?7!pJMj?mLOOvugbSl_mXC_}mNL6%NMa%2)-- z%DH+C+TFyf#%qTj=eo~7pD6I3*F;l%KvLFL7QX7xutzbazSO+=N_VTKk28EfIP~Bg zBJ~rQlY7zM^z1X{o+$Z(`n2h<0byFDp^w-4vo2Fnm(g2FDCe(DbKZ*{sX{*;+GDk% zeXpT8-4&*LQ!gXF%A~vg{0Nv$Tnm>J-6i|slwNRcznp>QBSnoHds^e~SW3aKQ#Lnh z1>5yf!!^sM#b|+Po%*DM*~gbHSkb4$kyqjygT0yJ=fG+A5HF6X4F0TZFhN5?&wcLX z?WDP69{Z>SBR^MFG`ShF{Vd1+h+WL0rBd@tlAE|iq7)Cp;OqKiwFw*T4EKpnPFIS| z21^HYOGqeId(~eEwj{VAc30|Mh;H2;*U*vBX}m{#5hr8*9&Ow$R#I(uPX_xvOdjLXj6neL#~^AnNOszBaezE}jD28opv}v_!+5S81sCogQyH03^5>vt zZ>QGKTswr)dc@Z@cXJOs{cnUgME?D%CAHtwZs=Pq6sWlm-c zO2g-_KjJ!u(>Vh_sX;W?#$@#(BjKZ;0$W!m?!miiV7=0AdTDKn*5%eOUQ^5K*qFDs z90$%gU{VEyS?=aud8?s)DTo%b6{41f6_3-g(&&AAN0;A=I5ouc#xV2R9PF^Ua#(Sv~_j=%_^f($3M04r3 zOaPK!b2rjGaX$i$E^$z4`)uM>^*V37Uv#`JX{a3MDmSEnrihoJ_ymg6&zaX(r2mRO@AT&8NDi(L5Zj3bGV zX>sCWg*BG0b@d;O78p@q*Ylo7+E=->NDn z@^!c1kTs}k5C3QhST%hAhq&X3T5Z4SeD93^M_BdC-@aiOSHAOMNO+)xzsYnFGAwL7 z)OmEwnJ#mYe^8`fc>{vGf1Pr8`QnoOij_6;s!|g{Q8rck<;m3m44A|jrfvNQ(Q&x2 z{rDkeVah&7EUphFIZ#S*Q;tQ?0Db z3F?!&htx~n(LkJzxx`|>{A+BP&SA$BdUsgQWjW9FA!LTKF(}o7YW)%d3_I+(ZRRwp zEB-2u_Hqc3Yf(%61~~*mq-!0aWyuxvNSwhjGxHnuMYH#vmCk|1EH^J|aVIkYD>h$E zaqTwTk|AQ-I{5F*MEtH(=L&j(jgXJPu&v<%i_FBJ=jMYK!MR6A;?SeVm;-=TjDA6k zVH?M@x%0QYlWi9{^nq9obb)|QKolkXFU_~o0A=B4aF%pq?uy{(FADnmgyY^>i4yMo zes9@%brQs+qT+!}oPDoTG9K0v&H1FrVg#bd(RZh$4^v665qLHyG4XH#%1tb#9jJS9 z)Dp+?3UyYcp8P@c;pE&JIxnURPr7j&b0dGH&+-6>{cgIgUqc;GZmHhZ{ez`m8>sh9 z9?LPvf$ac9xuqib^~SLO?+eMWTW;%~ZX9Yc_C~rL==V8NJlWZMFQEBwVzxT7I5{Xq z{6>Gq#i6iD>=ll!eJTKI%x8tE2#Rxu_j8a$Vy)1`1Rq!=PnO#aR>xPVyuxw5k$cB< zC;3|WVuj}}KsZpO%IFo2mDyepYU_GBY&$V%YvRuHTeMd28(MSF35ya z{wvs#5uvemMJ5<`xdG&6v5Oh(7+^>*@8k(B|Gg-PO-ZBzdKZ0w5*py${(tuPKZR!f zC-_lTUh4BR+AN$IXd3wLc)C|iw5`3j>iEg?!#)Pk41Kg~``R+~wZV9&aAz%&J(G4L zz2JkQ#HKgIn4`BvHDigMOsC~EC+t|7FdKWQ+Y;ex8@@4J7Jrc^9$m{*r?GVc;?Ww_J`%W*2=S5o!p2C;- z2W~W3u4;svyfqUCr%zWRd=EUUZ4?o6v5U~JEKe24eyD%ReZ#T!Sc*#(POpzBxYAU3 z{DlXL*w=7Y#jT#%SHvS{XU-f)+JTT&rPDkj=&4?!Dm4w&v4*(855dclHh35Q3fhZ@ z^w)&>f-FuQ+k-g?OO`HzJ6c;K*1k1*aD-x8?%_2s8?1F27mLoV(I7vw>8-rgUhBOc z3~!+Q_N?vcurpukm3P@L?pzn&xI6WFK6SMY`+ME-=?-pGk5T8>&gWB3?^5e{uuySY z<~g~PQXF9Z!PS>(zn+@1E(k2pC=*Ro88KxAS~T5JgU>tZ!3sRYAnxhg8vRB7#Jp>0 z4~gB})ZK({G)?O6^Dh2TO2^*|&#_N3&iUF;$?XOVmV0!Uoh{FDd&RmUiV->4BA;A+ zw;VgvyN3WD&22GvCk@DLm!n8<>6eVu$15_L3kW`jrLGo19L^j*-!Jfb^cBxPSe%#K z%7O^UH_mlrZnS4g)L3W7w?)R4odWMc-`z3yG!^!tC1R=>bX22!e~@L!&Ic$yOPrK7D5r|LR{#Jx;w*9N2+j z3`c;qr*;g3r*1VL-|xt5rar4GPM0lao|+jHh@l$1w1LQTCLY;Pi2!!d>^}h&G9w7y zM+aJ#IchHM!sRG8)gSemeQdq1%DF1~R>28O+NZpF^uvRaVaiz>rA(3mAX>c;@lmho zEpdNX{Mw4=O{w6+Fdxo%TGgLYlh~)@m6pxL)&#qDzBJY@*pj*=iyHTN990SDLNqm->L;$W0LKk3=tSEs)NT>I_X*P_J$rU<7Ln0a+diF@Z@D zcEJLtwi~k~_zXghyo}g}^5|a`+zrpr-g_54_?+HYvT}apV1R#lDrp8O-WH`w`;qy# z9%-~Uq^uK*lqbZd^%L8US*=NIWnHKleThFWl6*61v{E*P;E_pd{7ARxIGkfY4tt-* z7!1+~nHYR(wX#)?wNnCWge2wSjC;yF6vGZ zFit-J2leEqXebq9j%AAdWFCL*KGo&ZSB;mJ^7&l=9Ox98QwBo2$nNL?y)fZ9K$*Gn zO|A6mYL4L@5W)#J7^4;zdz^sjB`O#hRc-f&HFCVcV`%mqai^Jg84lJ?MFKA zL>6+yLk$P$yEjk$m<%27OfcuWHUo>nqN;e_yQvgHN zyYqSUcb-SebX%GXy`KRuIBTbIy0X_jnUJ6|NdBOxx)O@R_E2Z80o*`M7@dGgBG~El zvu+;t$WG&5?H9c&JpKJ)OI~arlsbdArv&AHxTR}@D3{QIWh=gkTs8hq!=-@m8Q?@P zoxP|lIXrZeU)Z%WI(+%@>+z#r-<+bI25+OC-XrNjDawvSTT_W}ZM*=)xLQ00a(*CtL0ItmS zRVn_nGBq&&)`f|FJSG)bP=s~#4odd^5qh`*oKG#V!lN_P#gy0&%Q%&*Ox4VHlXH)m z^-s6BfrTVC_sq#K_DF-iAYAZ`9O5V}iI7MC`^Rs|pNb?d&Niw8Bhl~FTggjv)Gu&F&yKYA z1BoUY%%3cv%F(Nv z`tB*wc*$qN+^I7h=E(~DHmW4_5V1=pNCBgjtTmfRt-JWBUzYPgg!f6m#-lZ`w81H} zr7PLzddJYABXh-&LD|ZN*nL4uR?8N&MnKUrIA5W`>(e~{BkL=&TaKewE1$xwzI{n( za&hB0J&|o_W#LFyR$$(Yg?FOR>VmIfDPp0o2?9-5Q^s>(OrX9jFLDJjhT@Q3oTOVe z>d!i{D$yHz?|-7B?KnN1FJ_9qJ8ZRp{JyfTn$R((p9$7hudVe%XiM6J zDK+ZTEaQK9U@9kzgFPyw2H)8(tT5_O{_P;KS^eYAz5ydJyoR1f~ znlT_%>@TDOGQR!>E7E@(H1V4*Y)xF#M%6V6QV*8b(9|0_#=~sf=khy3-_3B=7|Oj6 z0v}{qw9*Uf&-%;5Z5Q9#9&*iOmER0Dg2vA9D`R|v8ca(Q?&FqLd$k5!El99y_bW(^AuX&ds!ssp0dg^B*NrcL?FpFibNg%y}Ehp&V`lI9@TZVBLr z(Rq_HXH-0b%T4-0CkmsV&L!dGZ~7WILwBrd94beFd&N$O0R9;NjldgVASQ-b);nVA z6%&f07*(}eiFV>h73^wa&Fx)G%i26APwLmm=dNnYGD|_Adc>r^IbrmQ?S3q+?ThQf zdWcuuXP|J%(HWV)9MXCgPwGz|7VkrvF0gLQXj{$JohMrICLkBxY{oHeUKe+ZSDWOZ z;(!T3pl~32f6b^U$RX)^!N&Sd*z3g}9$-jwg*d@PoSj^wq6S7ahZL3hf5~*G`BJaZ@cI zj;EBuN50rgU4+c94Yj({Sh=a3x^Ucs59}}JiV4XQ5y?n}hMddzhGw3c z56RP?yt#mgpwl*1DEk0dQcZ$wf{JQ8KnUuN!$IT`lNEdx*UrFFdG%MD4xnKs|BKm% z8=S!=_N3>tQ2hxp$f#XID%1AzX{mOhNSW1SgGg~AZj&e2z5Pj`(XkW*di3t8bE6#d zVZ!fpt$pP^vsn;Q{1?ie!!O|erxskM2--*3U38kb!y%%N7wV7q6~u_mi+R#sM3XT| zt)`smC&3vb8W{v;d1^v5KDi`N%|J$quv-*=2+o*-3t?WR?jWvu-leAmLH3*?uZVw_ zNp}FWp3@NHG48joe!m%)y8{yn2r36G+-m%nUKMOHlGz2QZW-@?#Mi; z0WssdNTa`Vfqy;J2NLX*;hCXthzpXK@r9xPXk7av?&jFLwJDLB7Ih24&_22N>|L^|l_1%knRr0?d4EI0q%0Xz)HX*f~FyU8P;%3l4`cihG** z`&4vK(FXc<-%2AC^DSq)Yz^Z2GCU|J-o16HnPza|<=C`!DsB31Hh-jx#Y^AsTN;Vc zVSyAWH-!)WmR=kb+z{gDCp-;+QuPOdvbH78b)xt^jpomZBkU+b;kFX$P7+aN#z&8O z(e8iNN;uArHNG_7y`IiT0?;1rM7fGyg2WfOZA^^cYt2(qy(s0>0zT1txI*Gdml37s zkQv4WzX2DtWzQ3|fl2b?LU|YEo2#2%1jP8}rKQWCtkj5dJZNl0A~>SgcRb8<^t->Z z6S(hnDwXzHPtOldsmJ?_q!_zA&;_Xv|E{-|D!&&S^@E5`UxVGWK6AXiAX0x??u>r5 z?uW*9fbB>O@2Y7%=63u`1D9OyVu{f{MXw0M?ZE~@RJI#VM%zkS(ZYEtwV5{FJgq-M zMzEy9z7g_zvAs@l;wrw8imqdhKN8s$8Wm`W;Ee->36MnF0PMde7qx3b)U$wUoUr@p#wKSFq3x9AnOHAcF2EZM$M+UfAYjg$CPg*Mlkp5yrFTDp8_ z;Be;Vnt|AbEni3!tJO^j8dv%VL`?v?&9E$n^)h%Ts199OZKO<;FWCB<=~eVyMf+=r zGSc8HXLY@C;e(#Kc6nY}i62MiY_``)#zS-7n?sSRjPGbJd3`MGr;IYE^R9E9z&ryN zo!qslA4U=@lbUX`Fb(r|X~=!{-8ZYTn!(dkU4j@cBnz~=lRH8w)tdsE#Mj2yM$@tm zg&H}3o#Ik}FR8W}Mmly|y5iV`em$SWhyG`WLQ8a zEzx3qoUBkooB|^SMu)5XM|)d*<&Ly4)g?rFrk$=FCOOL^q)O`Y(HiUY{QX7>wI8TGIc%wh zNl_ht9y#~4|27HOJ>B&hCFL-rK?$_#Et9C=(7FWQ1-qIBc-EK)*($TYK3$H-oq;yk zd-0ChJd3yb!75dBjyV{26p-<;b7yurdK!W)IkXpf?I0c+(z!#LB0C zdPhf-hUj;C(?>_MJ6R{$jL!)jxmq~BV4;2K-eOSMWMa?`W?Gj#i9DOEv{yWAM6b|2 z#wgxaAS55YZ_phJ-M;Uf6*`TZfQGI}ks|4D8`Dbb#S$AbFDQ1-ecS=kX< z_5LmJF^ZdR-^x9ju&#t?vS^eBZi~(WS!*I5^~42w&Lk23|ZeCA!rO^YRQlfyOmu%-WNaM{Zgid>W>RDI^TtV(zesEEL>7?`h7)! z4$gs99~WCN!-}{@YIlKhKkk9Q>P-9VAo5slb2U4%TNk`$D zq-RTxfx2;B7-oizjO*#7Lp#F0V?gwPUqdy1Am2EA<=4iN;GPue-9TfAxOXd;V{Nv+ z)}?H8ZZ8#N+<6iIA};8ueOf2cB&Ys{#?O?(FCv?Kh~H8r?T;-xAslaZLhEWFFlEOR z&$Fh;J#LE`O&BVKS!D*vx+H-Ao$Gk%H`6u&QDAP0|1bh&*xs0SqhgB*kG?z7ux8z^ zfexBeon>=hP&Fu^hL_??3o@=bxgDtoGi)3T56tc(ivj7@OBcJwn??NMt6%4IPLQ8R zXBP$`_&wD3j>iK*sNU{eN(r2zHDx%5u#|;@KC|RJbWxhX=wM)#QiF75HLcm(qELc; zqxdcIM`pcxM!GfZcbv*hjhSv!-PA(f)8RA@jC}{F7I9lWGd=jSlJxm{o#%ln%>1$7 zA&*bMv!;fx!Oa`@4Ll1$QjhAo?gney4V`2L#9dF!gt*(yzA<>dZ!;UrH}dIOd3)5d zzrLwwdz{}KEuj8#T${ZoUV-CRR%_v(=_og{#rdxFI7`a2&D zwyi_I@UN*yT;bh`VT6Ri5o(NQ|0>`L*JE1ZfPd;8*zNjbukb`6R9*ZkY zY+p_&G7qmLCDmB4ap+}+FM%RbKlXd^zR~QVuTzTS%h|qV_P1^6 zGj^r+B=(F8l{kXPAkMcBX~7#*=XrQ0B=64!I*_Jb+3V62`%O9vcC8MH9Z0G%*v z?d6!wejo*sD565Kz}`#a0jBT4w}?Ngz5%v4xKssIYlh2vO>Xn{Pt&c#E`Bmp^px|v z^j`-Y?qvOgbzOE(g?;NHH>kMXb^i&Kkrl}^XSn{Zefr6`S#JXtnKo(Ud0a>?zGqyt z^pmr$`?d-E9W$Y0 u`jqpCS;ooowmVmDYo$K{ww8r8{pp%RZ;e8;zA|Qxp3ztt zK_nKv`;2Sw;%7Qv?bzfmq*K8_iaKfJn}IB!lCbkUTrJfsZB1-bjS%VoECLO<{>SEj z)`Yls?SH?a4?K4o+!%?wHkBrV4n`Pnu?)=oG;wz{FywSNH_yRIi`z^8vfV(HaBiHS z(x`dh7f{!=Ue9xXo#Gtd>Ipi5S0D;t= z+0S7%9a-Cdf*P~{%{tXT@)VJ-ofIkxrPBH}_@e9WkV{HAZ0UP3O{&x-+7WqAP4m5+ z`xD;fl1-~kV!g4Cn2%kP68J&f)t0#5ef;k=YmJ01&*2`{7A!9;X~2%`daJC4ZO5Ru zc~ZdLK9@|2KKJRKUB%*?pQekgmC-hC477Jwkkmg2Pdd80$@w^WYlJf%{uvNxjI;zEL+9C}KM{sz7J_HyvvTW50< zUxVc}B218Fje;YI=IASu=jSW)`i73)ugaP#gaRdV(}78(9=G6?8RWWqs5*zXU-Sr)aK zn#4od^YIznV`u;DYZoPcFQ!e$()IiWY425GTO6#&K9>+Ttml!q6z+3Q5Po$`Y`?vQ z9<0XD&2qMzGTbaNeLc3c%uULJXCtKteHBBiS^Odl1=+@rlgb&5t~dq)#WPJ1S>qmj z=AvfpKAle4dcRm1ff7TtSyM6S6wT3> zkrpj*MUZI!TsBYIr!548idOJpr;4)yqWC1lCT@)psc{7dVrsKvWrR%ksx%M{fV%e8 z%UmtvXQd8AmLKPv%ts)1zq`l=T5fA$V;`z0PlXph$_;EX-6wW6tA;!Bs0GM-iVmH= zU~I>q$vHZQ6pgy(TncE=)YGwA`$tG;F&<8MGTAxJCY0@k+$WWmu-pe7((5Rptuo}t zwthVM%`}25Y1C=jGF5Xfm~>b%g+&D^Z3y6|rCGXPFJYq-E-fZ%`MvOTTyA2PjX^Z- zc!`<8^}sAvif(@~W+lJPG<7=X{RLB*AP)NDp+Y{XfVVW!zbH2!m2##;|`H6_j%GqSa(57$5yj1m0ol# zQ@zqGvMlz_p`UCQE?*Gsn0{ds9i8^(&A97{x#)LU12y``bk=pB=&U)kqib6^I5zOE z_9B<+5r^1BIlY#g3jWxapMm=}v<7s#S7+z@mO({2{Q$7nu>GnDe0*qwj;pd`iaVUA zcoBO0gZ*XtsqDC{(Xp#o+E;6YhnPY{QR2&vZ2vj40?w@%@JWA+%ErK|xLBkL#Lo8q zlm4t)t(lAkbOL<7eoRA8lfw9`O27T+pYB-Dz+u%nZ23`bt02dP5K{9Ov~>dk;F=79LOeS-yP;RJf{=7B@nYb# zX2)#-&!MNRuu<=$5A9*PmfesAU|9j`_5F##nt))$!4BtyQ{*V=S+ShZ91g_N#&~p^ zF?wMm8;}*zPloXZeGv?-^Ov4(530hDA&z5Uj(#_lyss>jUt*}p5so*UqLfz`*1ot2@FPYPg<4j%viUU*^rwwPQcx~rLE-H z=wkg)@1>Y#X_cn9c`OFd$xVV+dp0*3=(L`Tfg6q={c zQ%-9FKj?asAHm%1-O36^OO8D)z3S{)QR9omzaL8ib?-%W5y;nnYP{5>b*PuSWklqx z8{VO#jo>b|?X-?~_K6jbY9o@%|8b4!Gn$xRrYjMMJIRAXJNRC;gU56NQt?}TTPEXE zp=wu$iQ-Ma_XU`|*wth(zsht~&2hUHSN%}_V+IREP`lz>=V~+B&!*Tmqhai9&H1s@ zsX~p^!LxDlt7?e996Dpp4Ie+CvATua6s$GXrq8CK>ow2-_Z^QCTq7|C@=b{QMhPKA z)1Sz&KHq$LsS5EggN(=Ff!*b2JuGWh?L&_;RTG|X){Zl30cn1n%>D+@V=F{f(~)Iq z?`vAo_Y3KlN0B3x!&a3gYENyVUalD9c@q_MNsn`=&1@S}3C^s}`s?|T4x}c0)0QZi zzuAaH5R-PGKqRVVsf29zpC24@Ecy$=(&o5??Yte*R5oGFCN^`;Tn5UNi??INH`LBA zo>7>$4R$DyfFr-XtX+r*P3>F761r$zsZRsSFy)bGE1Z4B;=nL42mCk%(c2qm<@Td;7^YBM6Aiq)wGM2 za2LKpv6xGG^Gak_s0Fa#;%E~cp23V0g=~J)#2t}utOUY18%E1H9ggS%_n+x(GOi9t z8(piyn)-?F*`pMl$w#=BzkD3NN^fHP(`kriLzMQf(Vo-mm?OnYVhRLKXenu}+}mRE zE;h)o<<=n!OY7qyM-(7W)y$M`pXD>Ask&ZxUpQLdc_?9Fy_`W>IC2}OTF|2VD$ywxT&GfpxtGnGNx zvB>YXzmLM+?D$PHJ;%7e@-qOn^{7!6^yY1&)wW33qJk>T?sqbC>O1a zUHgE~cPInA)6D}(n#(M}r<>?y!x02GwK!d{&fEzEyE z8st$`yRERF{&L(WfCo%@F`(e$;E%)0p9tKpYWtr|%C*T9lDO0xogDquuuX>ec=itB zNP(LZaW(Lff9!MoeW)|N}JS$;_O=)>S2fz@~&lF z82KqTkg9@SXyA|~ z^5Mn%J{>CS9>jaCy7z|B$k5*$Sr9mGpcVIIIa~3LO5p7z*SrUK z@^sdzN%uaJ22V`p`g-9OQ<5 z$+IZ)4bJ&ae#C%1d1i_`5cEXqIXI-d0e_6)XrsPC26gg%2!(ah)Zp(41G3}}%*eY; zRb^U)n%FK)JQ>cLaQot@miDI)Ua!@*whm?tqLBbDa2Ke5AKUw~_RBmBtr#UtIkULf zO?_TSh)Q8yD)#x^$(so@Y{Tz8-Vunw1+yVJYv3M09o);SKzOBwIv zK+PsIwc_;DGMdmC*mpg_Xs4A2Hd(z(wdmsoV9z+88~PL9Z{}R(J$z~gLvU;;Mt0(( zi$GFOPN%jnl;C_~R$-Q*(SYQu&km_HF_NU z6^#S23!iCxN&)RH`3#upPLYuEt`j(i6Jc)WGhkL=o0JiCNqqO^6%JtI2>{}ir2xUX znG2vbf6<1s*g_0IMNXM_>V{Uhj}r@5+^(u3>6-5q-9E-xE?9)`9* z%03u^Ud1$Fp_vjD-*rz>GD8pJAkU0{<66XbAJ zDJY4CCxwp5B4^p7Ci6|*w=E7Fr&L+tgh|(B9qL(!RrtOZiTv<*0|S1SUDDx?CkDUy zn4@Or)PBEUQ4lbCxj33OZv|`3#iDAY@}Z z?y@2S0VH{plD8eJ-&nFqRY(+2ibXb5dfhQP*DK$D#cX{?#uy|mXZ}(V zpIwhe)qU#ycM-S3BMmImec?dLX>LJqDlH;CUU+qABjfDJ#MhqT5RF|>j{py4O@q5T zsPygh74`DyrJE#2Uev(#!-NKZtu_Xah&bYFc(A6&x?US(%flpX z-gk+aej#`#9*VsZ=6|q3OlB`djg&wxGZ{CuJQ~@+2^}XtvYw9=arDbcZWWZkUlEn#H^ z-J$y3!{5gt`S@baW*G>jzH3;&seX%*MBab9xL?tOyHx7lw7bfAH`l;Q;~W05mz1FoW3j5GbRH;<#I_14JFean!D#V$F=!=rO>#_GPwLpc=C z$(ud(j+A&H`~~9&cxFXHR{xwa)>|Hj5BOX|C!`7d)hywTLI=YxP7cMV-xd8)Wf9vDTLVS~+s0WL% zp#5f2ntfqo{u&xt+6^*}BQ>$VcAPtPf#V(m?Zo9`Q@0g5!d(Znd9UWaSns^qy*UD5 zVrOkapSem8k2S^>RkGJLU*fA?H}b7o0+lY@?pNG zrv-wIBjS%VQ9})$b~3~r&vvK5(aF@{68yg~qv$5ufUETkrZV1fek+ z2@Mlx<+3}0Qf#}>E^7bh>j8LsPF#lGBl&gVD;X$L)xnI;?3=g#vPg;?TBH{Zk*Oc<+>lo&Tg$TqXVkZCDZy-4TjXPSPEVaH@WK!Oc3X9 zwo%eQ=MFnt+cOu=3zdV%IaHDEycvIBIQE zSKz2`e}8IaH5l($Ar@qpzLY9y;%Rg(J$Ru}W;p0x&YI$9r7S`xq<|}UPTfgM%IGCd zcg{NEoq*AuVevREi4|e~Kmh9Q_m%H}esw;(I;rXvc&#v=^#lutr4!5XZPAzV?l;Oi z`Q+Dj2w}Kc8k{G1^<_h6q+r)n{ZdaU4l}b_s5yPu`gL>0zTUp%83`mGgF?f%K|n(T zq+ZJ94RkiXt@H=p`U_2aN=gIwr*OyZ;N+TYCot|!1DY7tf47QGDB=KK<~(b8-#5bd zuE|4K(L_K{Iuejh1f;i+P^32jLFphM zASEKbC3FO&mq;fGMS4OF5aLylfS zp{gevgr&SxD!{y_FzwN@ajt>+`wWu#G|_DvN=EX9#3{o!X+L~D3RGqC@q_8JUqd-lG#trKx^>F*9X;=l9mbhEc|f!!=}o51 zM}Tl2!&%O@3oIMm)lTQlFDXVHp>XES|1g^{qQSOroKP!g(NC_}`%j7egd{onBUYmST>N*xzhpOC9SCY^j zU928|aNGI)fpZtyYXVN|U_08M=lCLnvqgfyv_ENkXSh;z&!$27A?Ywwk>B<9_X)|m z9QZYsdj_{WTrub6x@KaoA#8f?M$0r7kkuE{F7zf zTmi2nLI-2zdcofJGKFgvHr}x`CNQ#`CiC7UcSV_->}w6b?>HzIhJW)q+2nG%QRqsl(pbK(J+4*mbh-nU@G}u2;%ONQ+~QpZYz4ef{u5+Dr_D9>vFpAeiB5!(rLw{Z1}Ev|G-~ zuNMwxU~L`PWQAV#gqH>{zlUf@M@(s|3fq7RKeZh%zG`S&({m_)`#UUR=RF~ctOFgv z*rUR{o$Lzwnd@=nilrG-&ZRrlYY+SVYTHTxl3uN0QeSEB?h|F!kbS7*YF|l1MPtNi zFf29eLxcWuiA=I9rk|Iqu56Jw_oK8Xl6~9xf|^U2mjQ_NOKR7o3`kWvwbWlwp-=WUy<=_gs`JPF3aU^?O*M>JRF#8H~Un}rMOg9ZL!^#OLpLhr6| z#83)HD@uL$YEq20_}c_BTg6(X=ocgFGg)8771Xtq8}`WzB&_rbxIFHRolOq$b>l27 zA3qg9=a$`1Q(s`Wh)ccZh2bS#N*=59YQ(R zb-aUXNqoBGCLh&Xm5X)%#$ruC`#Y;M;ycxH)thU#CB8dkD0 zY^=XCp;*3g;Xn>GfSN+w4c;{kje9nI74fyHX_S`j-LhJ?!9B_pv6~XpVDT4J_!*Ol zgw4~upd$Nh2Z=PEG;yovzV%RHXoDePAbEMqL@!3Zrq8#)&e&2d8T&6W_`u5#?u*~I2goY_PMNs}>h^<_F}^ta z?mUf)uI5Cb*ux9w@5)i`+vi-!64Oiodj9`5THaRFqj}~R_1wJ^Bp-EOVgUG;1)Y2# zCM-qy{S0~KaSeC3KL`k;40U7LL{`>@IX9V-O4|ICKH3_bc!X)2UW@=JH@T%q4EGLdSa$>?4+uH4Gsp_YkiB6@G9nT%k^%z~W%2L#_P=!hKN(5? z75pRk4==v>!R3YhO^J@Q@;nYvpA2|JLg2kp!nse%)sklDQg4Q)g!>(*%uuri6U`3aKrrt&I+g+d)*-a=kas1iU zZWW#>q#f!9U9+8Oii%z6dk)WTlMRSNe54=dJw+*R*2k-h{Z!ib*=xZo#UQ&2C2)Bn zCTtHyBV?fW`EH|EqVE%%NOK93+GB&rn_=aWCygJ+JWdMU4Br0v@>Eb@&-dG0x4sg% z8^YwXS`E2j?uh*%T%PULnK%yax#pZ>sJQ@%^m}?U!3U`k`?WsZb^dhR9GUC}VG(Wu z<8&f!`iUgm8W(nXbM>-YMWrXrsty@RTn1k?Hzj{%{~)}m`l8ggJw`W0FCFFOCwaP5 zyq7U2G*+k*H;(Z7+2_Hso>omf90aO|^x`AE#F8oLRj;fE&1wYm*LYY-w3f7n5J#ml zEq7a9G1DsY0+71br`3#=EU@%^m#(M1m=q?pZ`3gJJ^AoykFj&WU_d$9cE^@D@D(?* zZzBEJJz+@LU5_F;0>7W5D1VOLP9Wt~G9*H-=cT#f0))orlOCxoX>FjN1KBJT(14w} z-p=uWQ~D2W#BNg0G6r%ylfQJgTCTbF_6{@@?hRX5tgEW6w=Dj(WOVhkqTdVX7Ky|Y z?80B6Q|z6~yngc1w-Rn$Cu56X7&;2~H${`^se5&y?ZG)Q@on{|CL_B#AD>vI0u_Cw z_(x>JaGhIa#y#Wy8}6p*F9$sW=%C*xuH!M%2MHf=?yZ0>03B3Gq74->+-PV$T^AYV zwI=Xm8PlMFg=2elp0s!5dUr~dU>QwBNJLd}2hgrCc#;8n8|=nR+x66-J-ObBxzcbXa3NWVwL8!2hynz7eTa4*(6%R-AY3L8}GVD zHV#7R2@hH6vc&C&nsl6h9(#5K5g()~DYc?1J1hbUM3L@e1q_Qy^7wh}nSu|8it$=v+5%A0dOOR3}+`sN=QWr4BtRTaxq z^QopaYO<)Hvcz8fS8uemSU3KHz=b66B#nB|Myik7gRbU599N?&ZH!L1i}48O^UyHe z7UN6!irfdnRR(Eqd8~cZTL@V|hA0;J%CF1RM{a$3JF&&0EdOBf8f=esX*7=WQKnc) zLHu_#5K-F!@Z-Q+Z=GhNO}|89nqGNdK-&@THv1CoIu5+kG7>cl)~{X6_H6;zQRaKm zzlkf+Ib(Z9cQ1-88rAe&lbd417Sd)z(}=Z= z6&hx8N(vJzHz8oh8s%Hx>q9wQ1Y<%5i|#bWU;Iqv) ziC0uu$W-VQ6Q5HkeLEbdX<7kdJLM#nx@uWEl?3+j%{+?A#+9#_h=;~q@#0SSz1ZZ6 zkH6&fNo7J)!HVzZw-dG_QRC_=)4u3UcHgR7iyA|hkHKAN`r2&sbVGE8$z)w0^T~#q zC6taj0u*>82g9>ivo(jIr{X8~ZzS!WIVG4{l63Pfyz43yP(*c@)QwRLZr3GSjBaQz zXkKAPsg5+kaO?{AMZPx2)-2K&CO|(^xscb%efl0JPYa9>weAwC?0^tiD`u?tv@f$* z)rTocY;6g*-|ifI#8pMNbLIdAUV{=7eWne^%WL{Md`{$eK8RtZ{!lqSJSoZVn%|V* z*gR)_!_P1n&expf5+Uyrx@F;S3Omwc%?y{d8Z%to_0epfWBgtjJTUvDseQ#VWlCZU zOUN)-bMNUZ`Zn8`#dVyyU$FaHhk>_I*@k-ExWTEWplqGn>8VBjrdZ+Zy8zg@qW8hg z>fN8OM>uZC9&ieRapt+O(~1LjT*Owy!@jPOuW0^|KliQ1hx5%-ATnryKZz7B@-A0% zeQDXgq;K9^OWm48h=lnGk${)ZBt^GMOwSd`kZv>h71M^0v5nL@D6Mdl4l#(LQ_y0* z`&8lZDztAy7S)?Q`J}soY=u`&FI@Zac66U#`tVEx_XA6v1=wLzH|eX#a&dZNx>G{O%Ps>qHKN%pYvwMbw@^s~~vDf-i}o zUpklQHl3=2{ngNzIl4;dXL`L0atH7?xVHnn33ryBk4N zTt8CZP-j_tb8UVEJrUmS?tNW4Mh`^eCZO`?zWo)O@tBOq1 zR3A*q0jFHg$R0p<61NJu8ox|AR&a^ror`zH?v|LOq{B)~dMuGFDg0}N1uA)~(#KM1 zMke&%yEAh^Sdr&?eAj%lY9`@ zt#LFHr)K-3e5_@nT#6Lo5N?YRfxklV8TX6C;sb7MZl=ffu=0B^2qyZDIjD?AjqO`T zM4MFhQ14S7jW_8N^v69WV~c7mzE}C4L+E?Lb@5KR%u@%)_$}L(Bi^^d9zbatyyaqZ zv%xvZgPC_$%;)E2CAWa}d}3F~%}_xuhXqh!^88UCa;m<|2&!4g-odYVNU+Iah`&x>ZCWS=EY?v(uMn;{GR;dZ*(Y9oq)E)3zSP^+ z;dYmjH>yn20bd_GYStE25J(T?+{u+*FIw|vkQKds6kpW;4lPAu`V{QpTIzUCm3OA- z65*D$Ax7Xus9?|9lX1rY8dzybh|n51_Y*#ztST8@=~DQG){^_m zyh%IpQ@7F+edF{PV0Z&#$cR;vbyzv2ei?J!%Ky;%TnV!J^Tq z=Mt2BWUkmg9S}f>a(EP{#&``WP6c|&!PXRi;%vwK?+TTY$CrLvDdL+P*AJLazdCXE zaWSNs%STavz){-D8M;gU03Q-WRV{~DxlD-+AN1qsJ|Hsm`A-vod}u~o6Tkak5HJ%q zOpV-?v!^p5#QahtaE85o_y(B|A`3PTidkllM(ku8Wqj1U9DvK zl6+ZbqfgP@Ih=a-9u1j_oXjQ!dlJij19%0t(!Zd}_^$USb2po~4}M_}u6jf>^wh>v zj~M4S0u*Lxo#H z4*HR8X>**zrc|?Ae?b`7Kih*r+FT-G*mm#v!zJL4b6rCJg08;|BQ71D9wCXSjausU zW-!OAB<_xj9{yc6d17z%i#2}Tqt^804Ef{(v0(M20>DOik#Um^tD&@Fl4M z0`j`$hW3-!Z5{w0tPJ^;o%*<8S;qWfAF$;&g$v$oDYzz4tN+?*eli^~a=^5$hMzhK z{%6R5^5FVmS;1crnw@e#Y+%DP_|abw2!ezDjz$d5(?Yj>p0xlwd7H{agBZY^pK-^r zgHQH=vD%S7q@@}GA1M5~S^|W!i#!47$Dv4z*b^!E4FvjH1?3KtKE`G~Xgh=a_$T;y z8PXOA`Jf}pWLThM(DgR?LMvK#_6XYsFSar!ucE_o1b&Q zi-x_QPGXPPbVPKvxO*|>2B-1VGqOib_nih$Zt2^d#v<*O*KwxE7GMO`DYev9O0o3! zg<|edq)F@v6Jk&Y+eQTEFulgS5uF^T9){v2&rni7kQcA3GoDGj3OnvZ{x&^uMW9)A z^{r2Xfx6EjkP=zIdYA)VV&H0eky8s=QBFQJS35aJ?Z14v2WJBmxvNyns!u~Pw&`m0 z;P*ooD~Uj@Zv*#4>4jxa=Rbh)YS1CA$_rFI83iy`y7Y?zk&Ts=jI!qsX{?&kE= z^iFmUMEO@E(tUu%avSu#dLr4oT{>l_yZ5J+UdyRE>h)87_J=K8A3+NWqw$U=Po@GP z3dsMk4*;yLO$gu~@I19c{zp^Z<%s^jN-PhN8h=4V9b|gz@yf|C0N*@iMh(Q1`3otL z|9*f)D)INZ|Nq2%{3`@$jc3zxdS(`FTBwllaL)dFNv%&Z}#lJto-tJRfL zt9NL2l8YCQh392(uf3(K+=bW3T5$Bf9&BkmbJ=~Pg_&I37z#x(n&eM z-x0p^x(GZgt5ou*WH59}CQ67a;LRr1PtHP|(VBbx)!RKMnRWzIEpaopA>S2@makE9 z#T89e6DsmbY^+^fk8X+{JZ^0L$#Sp?wSr3%NuztF3UG^_iikgFlwd157s#sq{eI(? zkNd{MYhW9Vw`yuHv7FcAu&^p(TD5&y=;E>HtW&&>U>_xfo3LLPj}%+S&eh`3KgOg4 zeTVufrW;t6xT&l7K*PKp#pcyRi9gM5;Ep1YBDf%rJrx9m8h1f^fWLQzl#|9j0 z)xN>x52A4acVD|3)fqWi=>fFK6T|CY$nol=^Iu>Mf{`iEOxFR!iGqnHFrYJ9c`xEI z9d@I~m#f3zq=Y)|4487M=?hR=2P)?<^jBK{g;kE-+e!})%7~M}$pyoiRc3F!xR|k8 zzY?dR;`!m{4Qm9OTNe^~{s8Y5dV>smJ#?^Ev++(=!LJ-P)WlF`=JUUH?E&ucA|1Lm_*>raR1&)9x_MDL<(fp;u9? zIKenY|4X6lD?Q@`#V&__e>>_F4?ROR)x9x8e$z%T`ux)EM2isk`vdNkW`qY^duYRj z@>E!8gHT&ln-I3New+4uoZu$$_t6`nc)i$HaIEJ7hKXF;$}S{CPnpQ~jmcY{QV24| z&^Pg-nTZ6W*=ZJ08(W7EkqJ3eGt!Qe&wAYRX3az4vSBOBm~zvvFz7*Q71`>G*`$iE zo8+vCk!Eo8N&UsmPTO_WSnH|FiCWp<*V6?tx;oa<_be`Txn_NBe)*(+(n_diWb5f; z{brw4vSHt+EctZ(27U2ppIga+y2C?UUz;1-l_iI{+MToS^j(v+?PgVah%yMX*)Mj> z^BEagsi3fuo?~SiU6~{5bxF#N%CpKXKf3aXTeP67M<@VH!@5587t{seoOKjeXnZa9>N$zSg4FGJ zVs$Y3og7*sot(caJ#fs0ix;|&HWZwcG|MsF!5MF<`MGgricfW&Tmaz>*cHEHA*XECcJ!3I@cQI-RKEzLx zlsr$DA|J#bN#=RE8d~Ko5Gx9!@kEX$*N zRUwax#(L0m>((Wg+iKdsc?BG%_n-h4(M$7SOi~uh!evt5J(}HH66dzGk$3k{>Hhtq zIkh04Wz$AMV|e|!DBCMJ$FG#ZwP6zH*MAOMzJDKYl_;1?+RAhgNuYVG@xks0tFe%M z#bIaK#B4syC-a>yY^6!Mx46_!Njtc`cjNfNx^4|QDR35S#$A-EG`vUexsdO6RLr?FK{ zXvCkPj1S-;?1uDwI)6@i6zs79;iJWwRZXp1!y)S?Mow41q=&4lg3BaDbZ3TDm^41J z8AxH#c5*Y6*Pa zZusN2S)FOyD5*h86;FHzRy2Sxc;2DnQ$1EFZxSnBG`Rjco|8GT-WhlywCa)Wmb)hUHP=B zaiVYJ6Y?_TDY0z&YpQKiR+fJ)+_UuEaICRpcUa-wL*-D?V8=Xo-P@3h^G7hfjF#LB z11WZ_(r>@Cqei?C`qGHxOQvD<&qemGu^sWxJ^SGp;ymGF79WX&%D~KTP<=hsn$ryA z7qS7H@Z`Qu5g4})>o)W)D`ybE*grX`{3BsjwfkI!_TFQ8o^Sa}40c*%68;1OZpCTc z7;AG1RIR_2$`l~D=JNh9i-%4GdI)7O{&xtA#O)&?57X!k5Xf3RemFhSugord~^&Gb0_ z(o@w2RB?vCFjb@G$h(&l4LLV=0nn?rH!@b`-Gu-2^5u8C| zoeIoUEEBJMW>Erd33e$OeAzbHDf^&yLsoI0U+Q3z5M%#%IuGsSmbZ7m>5*mW^CVpYskGx&YQy`DmPJoIo-}+XBnmDdr_$R2 z=|r`XcYDM6hN;y9X1wed^C$@@YMxFqEV@lvzNTTVR-#Du;Aba74>6Vdvddh6E`I+R zAWQZ``->N_sLiO|mDkEnF=wWw-gy1sc%~ajv-Bn3>~6(e03U~%0Q%gsm z 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%0AZ@$~K$z6Yra|2zw99(1;7zi+1Alo||7z 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

pvj1J2r1N~dp4n8{?%_cdr z$62)B6IJjpUbZU~Ow_K>wu$2aOnapk^f^9P$6!YhVrK8U6On@kj>fJpi-W1iyn%8= zNQ&ad;O%&YXEqWdZ$9ZS+=ynetc)l2qI(XxV3 zd2Q7r-qTsCwT;CV0NECUiu*|IA(U@7LY?}exeQy67)1gx&T<1(Ng$Uv1{@Y+L@TIf zn*w2Pb3gdbKj618QMF0))%`Sk$3R0^f;a5ourL7QoyhHylNlMit189nxKJi-g6~6C zp18ZZ4RZJpzz+{%F7t4~qm!oF>?Yb#@cHQm%*l?%`%V=xRr`$q?OuCP9&0Ay>y=aH zB|$oWP5Y@I=BlBA!LbgSaH^C`<+R}x=6=L};x6M{l~9Ph5LZ2IxaDoo<^H2KIbv>f z=weymcikg;BdR&r8F&J?NQ&i{k(V%VgQux&WzOsxapbzj&+n$y72-Vm6sxQMYdO^z z*=18lHwqK)T*9QRpvtzY$GSq?Ipz(p(#e>ob5N3Bwlgu|_+B9Eh*@5gLfhSn{ID(Z z0^ty5!G?43D*@^EwVExQ^n>3gGJQ9dkQ;;$6j!YUR=R+OBaghG4cm?0e6h%VVI76S zMxiVXYjRQEet?O#d<>C1~!`xtv&-Y<+);$r&<`}w>0H&%4Q5qA?@KVvDE}EVp7Bh89X@-{~G`^AIiA3vz?|P8}9VYB+`K}hT=1m z{6d0HSJM1>f@TZ3E<&tSE6v-(p$JLKhS+e*S!jfPcJ(%n(dRj5IztjIr)AIgtJVjIp+6}_p>-QehQLwyRVFnf z%j|v(X|vnR*BYQpfIoG`ahHDzHQRYgTe{8^_OGG;0MQT14hgGDkgwj5?e?RXIggd5 z_;cb|i9cn?9-V6%e+uh1-|K9oE(4H&fSbQ_#3)Tu{Nf`Dct$T06j}>cQ2V}bc z0E7}zYZd7YC{E;12lNkI_lUetp!icwlUMN-^i~#-f?7$KAmh_LYx4t1{jt6ySt>U550Q*AI_R{zzajcCteL_on zR(~yTo+cLCiNGFaF<({bx|N2nXAYyK+(&h5aG}yz*g86%gb`l^L-Dirde{6iJRz?5 zTH4!6G3_uI2E|-p06@-t>c8x9A^Gh30|K{AGo)xqu#MF3c$o49)BfJS=I08MiqDDjVm z{2Ql#YIv6VI}2Rx4=Kh?bcd-Tz6J4qyAQ>Wh`;cb-06bjz`g)mrM~lyeCZ>|J5#v? z5kMbXkBdJJ%jxl*de?TT&A;ykTl_y7^jPFc5J-#}TaZD>BkNz5+9sFaKN#6-9vabn z9(1i=#Wpit=#Mmoz`@Q_`<&w#udcsmPaIxrUKdXUYxd7;;tvW#1-0_Xa#{9_HhbJ3SXpxYhLs5!%_t(#ps9Q3gr;D@BOs+*jm>{1p@S zue11F@bUf>cvkp-!b#!;+i)W}Fk3Le-H-232jM5}nemcujvpUHYiily zpoy@IKBBzm;b({LF7CzQPxXuuKMu9!+HHjTwfq(~%3Y;!zg+b-_s_#G3ft*I)tzv* zV*vjEw?H22r(0>dPMvRUBC{+iGoM=MZ4wD3NqnHObyfDRLs8UMb9}yG#xOfoOATUV zZ!Xv~G3XC!8Uwq&)t1@XD_8=j_nX(+uw|1{xdqxm6l0!0ikWw(>bDlFHPZZ~=WlwY z_N~!*EDIIm589!iD@m)v6O~9j=U$}NRn6`7!|qfOD|QvMXOYK|ZEO!>`*TxScvAjZ zJp3~5?&lPM=A*H>oynXMFmO$6SZV7NTiJ5mtEX!VJsvYH_2fYR0C#XExcy(p+7_NX zi#*)8>Z&@>2SAq5vj^HT-9>aTTIm+iw3p1P7yHeM`QKCcldeuoR`$ZmE}-M){40gH z@h$!2rEabzxMS*mQ9vJ6Y92lCrjT)J-g~L&27g-e-w}LOS!8)EAXq=zJds{W71Xo0 z?|_LthBI0#XJI-0&7-@X;BH^WfG5;Eb9r`|GPL>bGhDp4x3|HD?G|V@2^sb{y_*|EcCDpF5nERmo z)!N@{R@Nw}B0#>UpVGN2&0^y1$+M849Y{D70n#snyc?uK1?9q^>{stnjeElya6j0V zM&d!hc|WCjeZ|D7Au5LIPsHM%W2X4WQR33fC@1e8Fbx1~>pI2V_ZJJbdX2p+lbD7- zD9v|+;m3%ji_N^eSfl>vJ?i`)4dZm*E$|rYKpsIbl#&~YqOr3bvE`fCSJ2kJ4e;%b z)SSK4r1i%Y=$dYc;doJ1H1*zkoKOeI*4i$$cH3?3C1dQh*VueA@us1TmIZU&jxk?l zX@6j|*pQ;2^uVpV{X*8yYg|sCH*S;x@qpfI1X^HSNrdzSXxM!5;{q z9$L#M``rzCB6!C}WdhbeInO}nA4;cl;@2&<;zWus?k8FR!L;~Y;TvoVi$oiLy;>h( z@NS-_8*L^gE5gV?>sWe^jcm?V-YF+;o1Ap|R}FipYPy25D?gTa7+#bC-CTH+PPd51 z8o?5Sj3SKIb=Qk*Rv+DiJAZpPAC+>D_;&VG6N`MV+!+rar9z$=Ejq$?FmFMDKp1+i zw{tA!Xn+UQRutc8)Q%>UoPL$+3!z%uLVt315ASpN3VpO1Y)kv-GTwo4KpsMxMa#%m z*$kQKT?Ma#bt{AdX%-)2*1awv7=7{E6ON2~R)kj9QiCJ7j1z;ON&w-k{vBz;b$g=h zK>Q79f5I=MTA2({jo^P5O72}*6U>#>k$6%%U{{s+i^O(T>R^swWM(CXbJx;Q8+g%HF)$P=7{{X<9Ys8;fn(70xa(t#ZW7i(lo;6J>QX27|M_=M@ zf`B~+_r=FhyhXE!hCP6-SnM?$sbQAwnmED90An@A>E0&OG>lx@6f8f8kGon@{7TjL znIdSXQ_75Bel!8vT0x7sQP2VWDo@NsQM%UbAirp&OcWfeSDs1Zi`$EtF1)i9%!34z z)BV~=^($>~MI1Sr@V3*q_n;2pd}(29iy~V|BV%fRbxwNMKR1ZAtx29MSUzc+FD5z) z=o?J&WH#a%bokmeUj2n{=~g=Zj4@rwZ5qJ*ZC?KXS^(g!JU^`8MsB5%V2(G&>>Qf) zEfc`HHo>WC61?((fCfOT_jeZ-A~`PONa1swjz`lKUA#*z)4j7uyU=`qam4~<+sJf# zJEXBN2{JQ*&MS`bRhFL$ZCO6ezm*C(z^i8B?m5*XaAlZ$+eahus+YDtcsF-)o0*q| z2e6ll}-KH7k?^HRm@}V=In>{(uMzTvj?b1I$J?H~E+g!ZT?w%;fQyBg0 zKTroXUH&KQk9y5!!ay?1xALm`j-M8^&n1o1OEtso*qoO22EK#%SMXNC6-`@QiBeVo z#|s`p`-%Ya9WZ=D@od)f%`~ZQALU$QJ@H-8@cz#_*|$dd40m^W_uY2R9UoV;x3-UM zv_p5v(N9BJR~{F!ym!=XCNo1h2cDpg^aal{@WqQQ!G?KNqvWXfsg`@|O+m%1<1e3- z^dMJHci~rnt=60b#!eh}1J=0RLc;xbNMk#Y<0H^eW@u~B>NipuUfoXMzk$b5T*ag6 zw%3B`)va_zyPDmlibhbfe{<_qWw>K`5Y!2YW&wdwo;^(fdcTFd zU8rBi@LpORs+?lGFAm>EV!C%vE==@qTKTeBbv+jLS?n%6$d~3)t&)EV_AL{{w)(Y{ z5t&gZ7%jVlx`C#88I_t;X@D_IcARwvsCbJ-u+((p4a7=H9mvC|toD+7A2(CDon9bD z6rOiDBPlx6G@0z23J$+~c|J3~SZC>*4=ks=={nz{m)?^eX2HnxsqD3@nIs8wB8x`^4D~0{xPR^0 z;7MTnK4mOHIP03}v|T3Z;xxFN1XAGbZUCSQikEIC^6?uESKVtJ@9wS#*(Q7n-SHfE z8dd0)AN5WF7~~&nSGAd)V%FNC*SIIIncF(?;fdL@gKnG#u5v zPfgQcv@_j62}#Ym zY0>SvTrvI-I#-xav0eP%l#cZct;Dvf;7D9!Jk|1n>StDfO3^eZtsuz9^{#_T)h#sH z;F>8)zCkLd-+0m3wRgKGx%m^IbI8o4Y}j!-_6)FLxP zzGS4}ec*f7BXx1B*_^BmDxL#-S1n`lPU6}<+U2Ut3!HCJfIUA-^t}_t9v#;sRkNK} zAHv*oM<|*+`dQN1KGk<@{I_AwYBQ?ZNpKcGe(phG@`3MO(>1lM(O{~uJdOeUYZ~)R z(dLiIk`=>s08z>ur=wNrxF?SoLuZDFk3e&tu^0HO6FyXgEorQ4%KRBV$u z2i~!7d@W+kvs#vjq4`;Q55kU6Kw#S?Pkbaj-1tjcDqX4 z$UN+f1JKhf?jV&D&1mJ^K2y5}pDPGt!@!J$j2+z6hbTPv7PA4hKs%~ZzzbZywyzxIW-+{-NR?PTeWlm{u|7y3I&8cn4uo1aY7E!*T>>*_j+ z`X5!WvD7VDVqlKPwR!E`o$iiyAO%l+WOG1ro>Jm?UvsHn(v@x`3RyW7-dtFHwF#I9 zIKjslt}9W~C)1`1s!Vcp$3gX=5*(KR<9hS!Q~84xiM@ve^r;e3cr+H7qRyj}(v(jT z;;SFJYBJdEK`gk;q;btK$kj;7M@o#$#PzDO14U=Y-m4;HZi2D|#Cz3&aynxa`9RTB zR|NE-lLM1gQeT%f6WsHPIY60|1JP?n8{iIV0K>V>F`NUMIY81f3}6~&JLa?2Ox2}gMI4}BicOtq#%A5c zXYL@>$V+iYC>K_FF^0@cTr!O(eY)b4(9KwrH)Ojw?I@ooX2_ zW}hVdst*-QB&oQA<{q6Yi)xZa9SnS90+Ru5-dNDH0(W&a0$oCh)aM-3ZL1k=_B!UN zd9jt;2N}gc5=hYnEP##OKDBZimjM?!+Bv8^%W?o=_i5gIBkqiIKphNE43Lr#8f~<( zz*#yodV1G3H8q7D7r#$xp5IZ88~1{NG<0F*-R5t>6?Dlw$_Y*0^~|=RZvOyqpU$U` zSn}|>z@Rxz3D}Rky($=P-;{O86%f>5b}c6q=emGKWCv{l%4lUJTo0Gts815Y1GJ%s z>s+<|vGeV>V~VdF*B4BpBe{(M%64!~Vo%P^TJX(lAI)!)JLb4HifB`O(t(dd$gQ0= z?@f)AT}scMc7fJ_ z2nciSK%7V|bnRM161+?0=hp_cm9*vk-NS8V>K3U(;~Phft*}+I)b!%0KD3RxYf~0| z>qJsI*l)DkHVbWSB+UK$3hV5(Nnkb=PN%PNqK&jEo^e0`+yF@RQ}G_rI8o2F|Uy1)#FH(X=E^|?geYv-@C%n zT5AdzV+eRW&z0vDx&Hu`d{^dT-^ycH z?&A|5`RE%t{3~MK?lQbY%!jTx#Q=W3XrH$ihHpy8f2BzQ{`PCeB=~{w;@jeaYMKtA zEw_dIN|XNpZCR2`d*oaeRrM#*zdxb9iZil#hC6zS+qc{0mKRH$WO`D#u6@~~_`Bg} zhAp+dPr^6XkFD5ROK+o_lk%d!XutaP_1En2;msq%{uqbE7y6*Q*R}Yen)&5$Wb*=m z6#WMk_}dhB5rZe%2yWOvbo+W%-H(fWb)}uw8nm$}9AU`Ep`zh)`VLo9%CN!rsR8!} zzX)`Hk3Sc5J-$Y}B-lAVW9}8}`bX`h@n=UUn#@pMMVtbw&M3HC{eh@lo}GWsdi>Rv3GGM1Kcuq9c)iTyEO$?wF!h`uWLuj4I4#(plld(B5tkhv^!6ch5G z_8qI-ynpa};=hY^%fAu$k5M|c^}#Ycvq(ufIX!!ORyT(J1^AOqkZM}py0QcEfy(|g z4&}du9sqb1HCw2Q-OK)|anM)Ux-ODnwOcZx65N(=TE_4%hwSvFg6`r~H!3g{c>rV5 zy+kdfg_=nOrN4(5$Ky)ia}#KGzw*vQB%MwM1xF(2x?F#0y0}!4dt_(wt-G|+0+{aY zWQ`9~9F@&a;V*_di+Pu#OT{FK8RuyxnbM4702FuR?`Rin=>Sz-Y1X7 zy=E_lUkbGde4Bg85s!8qD@x1uWALrqe`vGULEZc#;b87mX zS-i*C^vCC+*iC+nC6B|MC3iul+e&+70sU!`c-qfSQ~i;o z#f9h<6i^4k)?W*}U2p`=q{!{tAc0+GpYXHC(sA}O-fd%qdH^di zek|&aghbHB$DksCT=~9lgB~($$RBU0Y>d@gUxEH9EMDeqgSOiGA5i#@s$75>qjvOB zT=f1l@f@GIiWUL8fzp7v<Ma33c#*oaExrJFRt7Rns!KonAYdBn4!L>1 z%({1t2i_)@Zx~r7KJ$U;#Q}0lZ-zby(<0roYbfB>75thOn5GyAWCy0)ezfb)9BGmU zPavxvgq+m~d`%fsi&&%w`^!LF=kEObrYBFe`43~s{40Qa-DV5fE#lIh*?OFDUdsL_ znB&WeC`bDXipHPBS1BV%N`v13P!~MLM)AJfn+9C=0=IN`@q}tbmbr7&cNNng7d$G) zOS}(qGg$*%z11e!V3SVG(Ug3&1Nm)&c`CgHNpLOn<#9dI#)tR=06#k9@4Q!}Ab2C400WR)B+v%i+IULA zzEx|M90CPq&UD+RWs1|v{{U!?MRBospGlW;%W<>};~Z8@-afFjEVlcmU~!JL0qJ7O z#FX4a12y0}=fpiq<%CfyTPtz$j1ydJw_2U#PcsQ_P;-LD zfIfrNe0`)q9Ym?g>~mbB{7}-PZJf#h;0`OpR>I?Oo=bBW>yC3*Qqz2F!rZHM3`c4J z_Qm+KpcYlUw`f>&W6fwc#D5E1L<&e6L(q|5J$;H>+{PEo&l%fJvC*Qpmvz|M6!N34 zJ!k{gb#I8afQV8zXFWD>E1A?hb*+W+V~1)u#!1a|`hAav?jdDn3P=EM9r5c>Ero@Q zjcix#ihGW6KpX^~AlGgi?93$ZYf2{V`YC)LcZb6a1($N#KJ(6IyAu^Gaf!Jisz~;~A> z>idv;)hMj*1dh!y8@Ws$=TvT{)a)c#Kr)fg2cmEt65W>31~xacdo z)E`f_hD$|}(}9lTKGpHU_=4`~BxNK?80t79>0X`TPl#HOwT8=8D##cv_Zx^50qe2r zdR?OZn)4F4``fv|>}jii;k{bgR@2}KGL!qvbpz6{)BX{w`7RaZ2=@btJN+?I>H1}@ zlw!+Ia8-sGyW)W|-H`KLgm93ozkGG4+*(|TVtaVOTztfuWKlhnB&FF91_e5T2YQRi zx|KfF04$OzAaZCDMjWz3q)9R+Op;^e&rJGOCGM?xb!;qj_%kCGRxRjHt#pxiT1(|? z%Yghi<2>T8OQt@NI?G^zi~aR}pdR9Z-1BQ)CA5IgdfT0GkUxht+GuHOcqG+lP!d%! zh0iAy1@4t5rs4wYwnMqSc<3u`&rZ^^E z@Z-h$@+cUvwUIt{ah759uc35^JUgRXKy4N>@`3Xl78TXHtC+$!-yK2C0ds@!r-M8l z;Y~6Ndn;vY>qrvZ3X+= zG6zLM6gQ#oT-SwsK-Tv#+F0rew#e!VN_io=fNNu2Hd>A2G*Wpp!breuh6aEuMWETw za@K1Z24D4WoP5>J>iQV8y)X0INPrBEhaF8*y}H-z)JtV+D7l5Qr1GVGMQQ2YK3z^9 z?5`Qc_C`4gCeOSNy#RDxA(H;%!>Tm47Yu+FJA-|&|Bo%}r=oy%;3H^6ooBOO4m zShBLxG@C;b-~FN~6LPAaLYk{=+I5Aq=u+&OD}&}oy*_L=UT6c$?ruCuEzP`yLa_ShiX=2NwhJG`jAXG{%N2NBz{R!y^sKaBw}Vo=Y8PV&?rpz~eLl|JC?@ zFAeDd3bJl;%mqrG8q*;E088?7w-`OLE6go*eOgP8vzx#hC+789^j$Ajx;BO{GjU_` zkT9W)Vjp~b!mEDhu-Wq(0K$$hE(UarH=yZQZKp+Xat*_h zr;?j^72Jq(z#^lO5CP@@I{HutEiQwnO94fNcDGC@2NjyW4%4B-<0Gj9-mYt!o~vOt z`v`=ov%hNL?>-}3>F5%BVejui9oW$AAvl3>pmW}{ZuCDje9L(@?d-#oT&!OaCb?yf z3w^uC%6)2Mt?LrG6GBj^+(@7bx4K=?m6>Al!V!bq)-CcT@Fa|e<0sa&{{Z13vb&N+ zx@Rwu-vX*#>K1ZLB30YBoSt()1Qzf#YyjgOF<7@&(MqQ)k(>ZWBDw_CU=AZ(ZBdho z&XWHCPPw>0F${UdR6z3mZ%?;{#8W6DPJ_K;LvIXh;nR8njw`nDUA=|m9(BCCWsAS9 zd7X}{ac3!p<#QinR06fEX*b9Miq;x@jSwMl4J$<*@e@PGt!l#thACWa^_?Mj5%+i$wfMI}7=TLm1 zLiK6@`<~ZWvDJ!8X6Z5>0S6|vf?_k}FFELI;r%A#UDM=Soh!^j2_UIEO?#h*ek9*U zBDe7r8v_ja-Gu;qHpt`3%BzOpjAV0I7oHT-?;>>al>s^6el@8D-L3pdBr@-b&PTmN za~7im8;ft=s+@(O4>Fg+^XbgZaK3b9h*CyzSnuH*JBZ}+2#Q9>8O?gy>sFIW$$1+j zsxrXz6RHeQRCb_SV~N+##M0Nhi{~tBZFR zC{YzA40tD!0j_h!_7^U~Z9fID3#NF-ddv<*^~Ot z*LkChNgzo6%%)W&VEyGjrl`TFX5M>Atv1M5svWq=&)&@dW@)<3fsuUsau?7F>CM)K zIxJ|$JoNSEv#ji*l7A{lypxZ-d*-9nv}T6p-Y8T{7gM*d=Rg|`rEEr;F_`g@>T80! zym)0N_(A)wIIgxuj@61=$trIj#Bv5Joxjj7^(GgIa2*h2gY7^Z&FHyk>!X^zVIX!Bl9EBsTO0L+!pa+)4H+@FUQ5G}- zV|_7+H3sr2rcBTT>Ty;CMS@1T{1aipR zuqs6v9Mmp19Ez}=C;^|u1$3Gs3CX!%ad6@&6pp|Sb5h5pUutf?b9ri= z>!Y;O?6l%Oak%z9=mU|4*7i%4wUG{eYoIIk2Lj*am%e*e(SqV;HxU87YPJ2bjt7== z^AVmp=71{ghEypj9%1CQI@m08B=8KB;QCexf_W{sN4pKdHMyc#G?B7No;%P5tGP_K z3nVNfVZqO>U9`G;W1Fv-lh-wIbn8f>U$n62j(uu7jV|5HVm-`9Q}mzX-Rn`1ATcH7zbI+w{ zTx-*{@1HD1SwUVn$TahJrD@h{b$Z@h{Qwk}H#T~!8?eAccnoL)otC)_Hw`tmR#HQA z*!?Tlv_FdaBr?ZiuE2JY%*oCV(!6^1+rxG@4%0z#C$p1Hnc15$N#D2WSCr`t{{S@46At;SmfCYq3r#c#?tcUL zS1)$Z*-4ArCQzs4B=Be%ye{r6@#T?m8TDG6c%s@cQs++vPh4?WR`*sB%%RnqDLMez z#dUU{*wO>#NX?G986to*H2(kc zogY(Jiyi|IzolA_!#+NMZMW2*ko(9e1J!Kx%ho~?06E~f?NI8vuZTRO_E{ri=vx)% zE#be3Y%pfFVgCSKMNb!m{w5X3NL%S3Gyq@U>av{bcI1)N#@Vc&_?F7KnA{@{a0Y7Z zo*nq56oFO^H46woh>GM}Vs(4St_XiTk8vP9bZ9l`sX#nH-LOw zBkxQw_G*IT;n$01$nu?iO0@*Y^a(W$4gr&>s*%psT$;_F#a>I6vz4TbbuGsg!jFc2 zFpTa=Hm`E^Wqu#{i4?5*j9)hxClnG%t9YPZg9#)C^sZa`L2X-T+}W;-{5aMZgMV$F z+nfqN;aYf#QHX9WnSFf90OtPywp8%Z{&d#Y6-W0#u8F=KYtUq0+(8gxhT(^&PyW3CaZ&2Gx2{svT2J?DO4q~s{p$%Yoh%}5tnJP#v~T!FZD3P_v~)52 ztSg<=4}|U&)otZ}Qu80>KoX_D!@UW^>pFv9&Y#>|tz3VJ+Fh!7ejn5KpzJWY73H_O zW`yoVniON$9E#49OSz3nS^Sh8Fen;5I)8{BD8A;-);k#a<;W(vi@y}=dr#XnciuXL zJbsnu^4n>pvvsIQ%zGBV{3)zvlJ@~IAi>7 zYjKvs{CQ9iqc>u+MOf5CdSr5G*KMbjGffuK<2$RIztyd7q>s!C7#}Wu z>f9HT+}cSbO0#)?AqUV<2V11cVJ)nM@wO%#N$9Q^i){$_>k&Y|KpMQ#Z`xTv30w--rqZE@w}lNj_pC`FeM(Pqay736F9VAdl{v0OmC@Y%a^q6C{pF&U#fVO)IY#GB0bZSJh0|@Mn0ccyVDnwpk~XtO$g=sIA6!re7b&)mQt`2oladD+s&ig6 ztR;jL9+~M~_Nn1GM4xMcSy8(WTIKvf;hW7EM=JsrRmh+M$6mRLJls11gkXCh1l90!Zqx#hQA4s~6;?OZpq;{YWx9v4uD_5~4Uuq@? zBj!2m1$FH{lci|BU^!wi20mf!UmIxtB1WHonoy7kP(h%(ULZ|K*1CQVt(nU zA-TTQBnulV%NgJfg+QRp@@;3smyo(aZw~U@?q5M%HO!arH_oHwV!LtkX1Fr#t$A{t7t!J4R{V7`~Z)yPLbS6zw)hzGa!z!GH2b@=LVy8^Gj^10xV;IQ8 zaDT?C_;bQg+*(aeiCm+nMCIA~bLquV9_113y&wZE>f`9pcR98Ak9>XKCs)k6N1J z!W#6K5$+}=Z~{2V$sV=nI!A~eZ6Xn1&2zIJWMpR^f~K+fhX$gzT5Z*!x4MMoH*uWM z2bSwv_lSHoF}1#9akWaTcH*_PuNzrwnp8sW(Jv*3Bz&VPJ?mS~xYtr^eO^m;l05VP zkcPR5{10{Edq>vv3$$h|e8eLoA4&kXsawZ?rY50c&uMiAa}<2;QhISzBGoi2)`lHZ zP?8y7Tz|AZtJ3XNwXF`$@)@JFxpl$Vyty16E6nfy9qU$Fth%IZvO?qLW?qJXIel}* z7WNvf66vwYacrR#%QqR%dhb`pS~DnSw1g5l=e=;chMjj52I=(aZeVo8iyHi)`=7$N z1O1{25!p$wbmO;b0RPtfu}=_{odp7t$43=O>W8-5sx-D3PTKHvjbW$?78EPRB&!k2Hp>G+No++W?R@l zdZ?p`dBGHkrA1{UTw5rS6p~d>TE@M%)8&ott{{A?WZ?Cn4({yf)^LmAGb~|1T(=pk z_E19XvgDa2KQm{F^ZiFpT~kI#Y$RaEkdNBBoh}&$i50uE$0l&hdr(g?xjvi*_@kM# zCpgawic5Q&k2pshM66>4yYW;Zw!Mglwx4={a$2+_lHo2RxlDZDE2!!9pj^Zng~~x2 z-Admf>RY9FPN}P2UusPjopCgao)tO@_1#`Eswdd)RgnXoxb6ov$w6lZiqc%^#dr5k zrh=0=3uN(hw+(3|?{EJ5b6XJG>hL)GMe8w-k~5mt)g_ZrvpR%_GsBR|ILY3ec@lpe0o$|9}^#i2< zWy;%REEm|;b-`$td5>-fTG)|bMks~0o`0=pOR7Ln!qE_Wlj&6uJj&+!S#DlJ`$tW+ zk9Q!sQUKeIwQE*_Ic_&weZqZfE#NTxttZ~;R0ZuYlugmd6b_=dW4pBx6=vM+>0E?X zbD7#W+~8EPMI6a1G%z$2_X?m#bj0unl5!4A$5Xz7_MFmiKK29<;OK0)tQOJ z&5|3xp%ekz+AJ>ZaT(mn+PaHtOWCD~kS@sw13l}^V7WwysdJok6~AG2BrpWHV9I-( z0YDw8hTBZkLf=Fsk8lh-4D~gstLU11Od7zWK*K*kdsP^%Z?0vG$kEJIPELA{db6ai zpERH8aurbfLN7UfnEFr$pm=60YkeXpFXT~@0)Nv$Yrj9(&1Lp2Qr%CMftS;5R?<8z zc|2B@cXojzv?FVOc`KpT{4*;U?krHdZ3gJbcCYvNSn!N2YzEl(Gk7@wzWMtGQdD95a zc9EWsf)x z+*~|*jFZ~oMsbn+KvefvPkIvSU){WCY)kK3S}u)ebn`&1pD(6*@##})9uv5YQfOuy znX;;R1o}_|irtG*FjQQj8;>Trt9^P_gxXIU?f~s-p%%TXY5Jeo^%4Y8@v(;o)~o6o zO{a*YX|&t4f>L=Iz!>ZW0CiS6&8^r=Ib+0_IW=}g(=FB9&9Xu|cKoZy?yPkk67(C3 zkKP;%smS8G{XfL(14kC83{tCbAGx3j<@B z5^J%yw$zopi?vmZ^ffikixkPWSv;~n>kczO9Q=voynnkNIL-xFllwj~?x)P4XID3TCiAS-wR|M_WD)?-Wbz02+X$R zp>AFBR*USsl^{dmHJF)(i8Zr^+DS_e<${7JC2e7Lu{BC2(^{-Q#!g@X6 z4FC~?-D{q|@HD}TSihJDV?Z1`%%_S#z|nhUcVPQ2qbZK3wN{PEP{Wa*(tstKILN3G z#(CnTk;xbpMau)}Ko=N-ep-OB&ss(4Oa~;;1?XA2){;m?WW;e+xBJiq{pZ%69CxhW zF@0%#z5K#=7 zWp=3$#F zPzLnVL%DHJVv;Be!S$?#Dp(^QrCW|uw1wv#=mKOC7j2Kyppy5=3@&)uK3bez;N z7-s2MzHroEGB(hsfM^1$H2S^ED)1Edu9m}1wX<+#JDhc_IZd^Q-qHXG?MWwyY|a63 zw;gB$&=T$(>>v)ndezA6BJ%{rK_|6&JL_?7Ng`%)r?qa{c%*J=Ke#vq&YVlY? z!~wW*m9AvpM()xmYldOd833B+Z#4GSy7n4}oG*-l5wg~S)9et&&*H->q z(rxtvj0&>C-pUaQOcNbRHOH;wydj+Y!zA>q>$s%31=-sJ?ur2ErPLuVB9`P9&Oxk5 zd{1+0bFs+?ryqrKax<%iEAuGEO=Mn6C?w?iRYVU_yzzgT9@JgveSNAg_(%-V`G|^+ zMlvhTV47x&u0gBGI!3;pwLoARxEFv$pg#d3wGuxM% zW9Duh&T7Thp{OU5d2FRjObY!)Qt}qvPX7R(Xr?}{(m~{7XrK?P{4wI)2gRB+QQb%( z)gw@?yNs}_DWt+o(_aM-7aRJ9HS!!yakI>}B{rOfQgUnDd=>E)8%Te%yh9fC007O- zGe8}E#2S0RUd6)PDfyHfDfglqS!GPcAYi<=t#=xJmElclHF zOC{U8EAwzkq{PlTXf0TQZ6h%QEExX)Dy;>r%&@i1qLg*uq3=|+y&mK*@8vf8PI9E= zk4njGux9a_T~j{xvdK=OHUB(d)1Ax^5>;>^V?hN;St|5 zsPEFepTvFwxQ6Mjln|}h9tXVudQGC(-D&O`^?c66917<3IIivO;0YspbG+sgj{2t8}9gTz-) z3~&3e|yVzfE1BVB(pbnPP#+r?!p)b)VUV)r* zTT1!_BvLSRgcG?l`p^fm=^Dzws<%Pd zKOWWDMGl>Oij65TkV!`w72q~nlFa57X9zON$J(^*HCn2 zI_p=q)7xd-(uO~K8K=YIYa~K*E>A6ZaXA}o9_3C)q$?{{lk;&&J>n`ucnuN;AH^`~8bdh+PNiCDg zlrSTangf{h+n*44g^4jui1EPhRbcT}xUf8v4>G*g>%~`=%&G?rI(5w=Yxma~g=55f zbI%;m9LIli;`{i9?=j;(t5loETD)tz3z;O(1e4OZU$;plMIQCoECu=8;^@*R$K4hzaH)gB<0Bc>`$XVlkzNWdWFA;eY7+y4Tcp2;OThZ#~;!iH# z1GI8|2jf5)dX}Yq6obo+r;PL`wMS>JYH%4DqF|?>1lG*UCZMPmGY|)ltz_!Db?j`T zaVH#YpbJf_-A(gIlBvhxShH%EtkN?Pu}9-siF2sHg=Bd#+!0x?HLFeXyB*zV0@d!l z60Cbw`0I+vpId@J94jatNv)Q*gu}U1zBsBUPKNT?;qu5n^Z|=DrwGAMmpyS<(&`eI zZIZSJVt=JOQSjJ|6^>U0zad-=@?6=slQR~O^gSpmnC&FgEt(=EP|eV1iqV5lo>h-- z%s9yBn(?XcZnLoGDth|U?e+V`lg$#a+ro^{9LJ?xTxwc$@3t_Q=)$OfZR^__cw2bS z-L6b{yHJ@*OY>v7t$6j4Z1*I8GLe$K=o)32d{L|~7Xv?9Y1ZYMCQ}&W=KSk%?jY4{ zl{P4o1EA)(o82nnOQRe`lLNPU26VcAhz{4ckpc$pYNn}h@3KL)SJt^LM&A0~5bA{E zjMQtXGr*Bbr;hb$0l4?#G-#S;T-6rTmQAF&XOF#5^J8Z!;O)m+%vVIY8!`)YrU!Jh zLvd^+Vq0${R)vNA)C{j=2~*W;j<%ic<=Go#9!NE)Cv*iOeT-Le%>a7uhxOyBM*4oI zZX5VjkEL#1cxfdJEhCMhUhI0;lj)j`#BvDmU6TcP>+M?7c$Vc^l1;^%_(wxP9b0G+ z%v42gk;xx$ct1+HWu|FzMIdm|+@a-9Tz9WKk6dU&Nxiq{Dl&dkTK2v+XDD?P9(en% z2V8p42UmNg+kms$?qGWQsG`orMs2R7EuXrzzoq!EOud72N`cXG;QI8UvZGv8Q;pMgIUq)Ijox$4cAPH7z3c)+ptSvLBRgJk>>i4ow3=eHin|`AFy~BGX~G zgqYnO5OJU3Gy&$izJX$sNiDQ{$82>KSuRowevd}lMHMF45e`P-+=}4! zN0#Pg41jIz{p?T%72Uj$+{1Zj*o>W{9YL>B@F$5^PS&IT)Mf!BL%n)}JJ%y?4W<0B z+sZtG2t4pJUG3L|?c{q|ttJzjhFHSK)Dy;N1N0K+CDgPSNNb!^ID+j{%%=c_$ z;p0-gbj?<>mVGP2)^=AJGQ$X8!3AabQ(b~xO`t+@;G7@tP-a>2U9q&hN5RVvnEwDQ zQfYTaJ6TYv6G$?x{p?pouH9K&v9Y_zlWunr-_pF{HOsvw;8|Tl8r?ZY?~iH#^v@4n zLe?_RAI~D6o;K@URgaR;yupbQw&I7iasC>+vz~I`syyqH=sk^gs{~&(Xg+*k`w9TU zztPZK3B!)OV0zaxccty}1YwYKQve_K&lPxc!kT`h zw@G{ULy?sSs5K>zhVO1I=7t?faz1#H`4EISODlt}jdRPl|L) zh%X_QM2(YZ&Tz}$K9m9VR*g2LqBNEfTP@AV1dcF@!@uKKt-O1vww*Lu)vCjGNl-^B zKyEtyHTkL4~$x+LDnjrXrZGAFZEYUYO2Ln5Yf5w11QSnb!(+k_ZkDF_| z2Ws?RdgtHbev`eiWr36YHA+7fUTHeh#jB#pZ!zU?I0RrGJ?ZVC=&~`B?P@oi*F$e*2C-nq)=-d%2LAw2iu1b& zY&6~G6XrC;?H$E*`c|)N1cOhFe3_hN?%+4)K$+C)v9-3E(^_Dyzg9ePSd(g(Gb~mS zmJ!@8LHD978MQMsm-i*DALTKpPCe^dO+Mnz+kLrN2yLm~0)h=IT|Vm84=to5oD=y~ z33VHWkx`vvjQ1T*D$T4K!b6#*1jr8qsH(PB`g~Bl61WnR%Rgi7KoaU2h0JzFYgokY z0q3SM+ZE?gX`05pBHqlV)icWjjQe7{i@RHiB${hRTr7WcJTV>Wu94zPb8e7o$@W1J z`^WB+K;lx^jcGQP>E+CT?c9Ld+!x!vfl~gbecuzSG{%i zI@Of6hTw>SJwe9oel!-36rN2appI#^rtqREtIED)G{3oLv|v87A1wFn|p&M;mPe(#BP$Xalzz!S4fv) z7`D0sy#sZs60x{bBxGl}_Mi-hB}ssp^z)@XM_EJ8+c z)Kf35;*J(7a8Fh5T+P0xb8nS}%QJVT$*Maz-_-I=0CYNZTh*Wg=D|OeT(SPmlr^@Y zDNb1W^{zVKR58laqmk8r16HNEfzg^bKQQDGKn%ELg6c@&ed;&_cO9wmODi}~#18$c zr`zFZ)-e_tM_QiB?lCrHUCTfl7P{T-w2qNE=ikzq4zs9OJ5K|U?AwX-KT3*Frb6hu z2U-rX}5G^sINxTemD3>Qn@lua@J9iz<%D9 z@kYyR515_DkULcgQYj^PRFi?gGy(cer+A~ny3h$@sYg3G&r#l|)g#f7figy2c^M#+ z^smhedy9)1Rqf_znSZ)S#dbO$i**}2@%@2DI+`k`h6+G z#NHkrVUp%D(Vv|68Lt%o0EN%t-FDbo-=o0JtGurOZLWN3{t`0Jbp-D1Aq9cxK%~I+ z=J7Ux_PJgc+=w`EK2gSL@#^sXr|d8<%{U|+br`QP)HQty<3 zF^czZ+Ez5XwtFL0GOt z>;~jg9D16f-XYX{Lkm5Ud0P+OP){C|`9SQoO>e`O*DV#(BNQhsftAm_dETX>X;$)^ ztup;xzVID5^y^v8;Xe@S7anXjueFa12M_)g5bzed(-!FKo$1_qQOX6s?AdNoE7+$D zNhOtzPZVEi6U!VDA}KCG3cac~@Sd*=hZ627jNtL?E4H=JXO7kezLk<>a^ghkk3&Z& z5NWpatO7f$VhWt(^!zKM`&25(5-dC9De5q54^+Fe4Zhm+DQ^!+jjh*43cq34vuR% zTyOL>l=k!3&mGgQ)pO20D~O+7)Z{*7H*TTN-P>9aYI>c_MI1DvpwD^$=`~p`?jw_H zV3ER#;H0&d$s?UuqDuJV>)yK<6YUm)SB$|b9j%_?pC5;;Z-Ix;BGQ)zk5CE39K!z?PRxj+8?(}YH5OW!Ns(Cr$fxm*$X@o|KpxK4dci<~L8)p}J^@#4C(d zJ<7}bx^Qq04U&6Os-6UuPNHZ;*L-^lK440*LT;N%$d}Z5kiAb zfg3-&KZ&Y0P)+9K8eE`WidkRWP51f&(C#616J1aYwy$|%xgk-jTga7H=U%-i!0^a=3IKJsqa?91$Xjt39+cTHrkXDzA%dd>_p3Hh{^g5fYVnVH zhRWT3(#4sM9qaUqf}i(=Hk#oZub^uT#>zZF{T%Z+9pX?^pK#bt1e`XEBwFmu3M#?Oute zTR{t3-3Z1IVf!`*QAvrOg%dQFQbB!jxR6;@jzA}&&1gqGx7Y&Rsb^Q(Na>2Jr(0=y ztEZZ~Eo4LU=jH@|g>Tqt7FN;A8nKl}3%jBBs37KVCA-t7QxDG@3965y zTd4NR>##BO^{WkYV79Agc@pLF-zPk+VM`ggof6(vbOV4mAW#N%q&KkKI7_p+M%5Lk zHJ+|f{F|kB?mN=8oKW0^o;QddtU1j}nq}^o%YMYk8|NSWdH}i^{e`Y)S6@p&Tx;CK=te@>)A&OHTtoiaXWirxi1iEKWT}P!bXu` zsP0Vw5bM`$yP7gXf;p+;*Y0MV0dKKKx21BesYaVEB4FeYMh{YJ)%3Y+TEaiH!M8jY zUU@yJ0~#BaoroYHkYI=D_*NF7X@6xl=p<7S9Xkr^HM?6E33Y3^58Vr%rnqr6#B(LJ z!!vJF@{!*(0bSeeaD|+1IqJQtt=^k!Y*+UM)F^C&%|mc*>`RbDXQ)%&tFE%wYvsmF zli&il#Q<3`SxanWMF1!8lg~8|+pKKeSjn{$uoXeDuOoS79lK|^sybJwn!Sw}?U7IL|n)n#)l8Tum>O8){=K{uSa-T|;Lx#+!=gmG-WJ$5D+PMYY2~ z81f0A4(96GSb)1{AZG_X4NEnpoL1xnVKk%=%hMH2?&6jfw4Pz}42+)jUej2D1~6R8 zBq}~oJ7Rz^E<_M&KuNtoBa_8zYJ`OU6E7j(ux~)UR6E zR_598r1YS!Q`$eb=8e_~VjfXEFf|^f;u!-h7Gw+$ym_tzPt>k%;fT8rm|$bpudKl% zXznA(9ViY{dL4TZ$@atySE2R%E1tc%)32nCXjP(o@V=(BY;7&BgKs(9K2hmdve`gn zF?ri2M&SJ@4pT$UyhJfK?!i6#RhV?km6UmxISzYMt}g>x#x4*!?AYsyr)PO9vqu?K zUcCBH9HL$g#FE>ZFT4kO<#oL>&s0M`L}oGuMRnH}Q^#^{tw?lnf)9GhxwCt9kV>JE z&fo{BpgB((*EIR`zuh?8t=`fmrspD zmBTR|J?mokOiAQcw#t$^p7r3i_t$WRStM+s$oH>6(tK?zI>m5upkR8{SZ6@i2_%Br z?3m7RgWu^~man5)+lE_G%G~mLSAS)HWpyk<<#)Mks}s_?eN)5M_cp0>WS(JQcMhOc zAUqPrC_K|0=0al`9Dz_hf~Ka5t_*z?p82k&^o!uq#$(!H$pDN4`PMb#Ad)d64a@24 zKoH$%_dXLNhYarHNv1JR~RF$Uybi}4d}%^af$%BZ1=WO z!+8kvIT#qo`d6*k!)32x;Mf?hBOaS`UTGGm6fq<|XUg5wa<$UG_FYayim{-Y+#W({Fz4KZ2wwKoS z*AUJNqm8Y&XA}XC;q5y@igpY}$&`S{rZHFbjTR3g*|c1x((-V4Dm&B0ojfWc*rioE zDCU#PxrXA-XyuU_5^@OOf;vzGbg6X;S5pmL=7#k+&)QQn2TfnGn{BB%g%&1oCi zH90Qfx{u3Q1{Vhy$E|Ww+1w~dCXk<-Jajaq1Ty*YE*zuw9<`ZsZG7>@!vPeNf!7tZ z+F7`1E>}EYW8BkZxiDG>k#ZF6;C842zK^BNs>s&U2H4yJI5nGlVXf$r1h!(}H_ASq zwbyCdqBK9~@(7BYsqShUYlurrJ>=eIy5l_R#k zh1NiDN{&rhhWgTbsNiK0fx@5uy;HSFA=PGGLhBRm;Rj58dQdcCT-GCtB#;X{ z3%A@(KZtu*B?h@~qw26eqq@+A0E7C_Lq|{JT}e_Pw-NbLXLvaL^HeQNI+dPhMg7|4 zWFwB1XT>`I0ERW|UAEJ#*Ad`t?$ytDdG4HC>5pw9B!em>;Y#`gK#G6b@#yyg)?b&- z$@2%@C+l95;lCN_S2oKP)Whvxafvw1c{hr5y;fZyLu+NeDBC5!xNC{A()8^zRld~j z9L8Ah!Nxu41M7v<>~3=eQheZG5AgM+n zRwpboUDdv)Y*j7pu77s9VC--lbsY4d4V&AgnODq^hym(9!mLTKTkenNarYas{A-Sn z#+G+CA7GZqt4{TRkPDBJXaeFiPk%V!wlho^`Hoj zt*dG>JQLf*Qd5PM+YF%eHF8f2XgY1DnW#$dD<7BxnAhL&u6tSV4zHuzOB`-)_ia== zv5np9k-MA3`g}iUzKlx_Hn9zoG2GAxTjDj-|ld0v<=DQq=XB^#qpQD15m9#zFhou2REMxq@LF za+vXv&q@c%S(fuqxVb}hJDC)1C6A?Q3Eu-Zr$1WFzK-dvMdYv$rT+ldc51@J2c5_A zGzTgF(D-vvCJSg9ACQ(g#}yu@JhvVmW|@ne^)&ro{ylB~0NyoT`~F4N`qp4n(X6c+ zOLGiH>UWzew0|gm9YoxyZAF2Lz&+GpH z@$qj!3lIx)aHE0ce@gNDxn!KYQ!#Yhcs1-X{{Y9;$Nh5tmE%)?t$+881w_QQMOoiy z#dTUI@4nI{C9noEYnX%me3jH_9d5pYg3;M{dTDNEXeV;<#s<)O4A-T?ijd(z9G>3w z<^CA|0FSwU;5F(|{{X7|PxGJ|$@qxuxU_{nR4tvOrFrJJBg?Hnn0ImBy$i&@@%v}~ z^?BB>{{SJU`cNWY`Egb3GgWK{`qA30{{YLFs+JvPpbT4*MED&uSoh?MTY@_6HL-R7 z03QSESlWmDdR%|HYN7{&&PgSYUB;UoEZ_Svq>iW!3od5>^r$a@7igehWBSzgU-9rN z8~*_K{ZFU$pa$NeAWfqg9Mm}>M?I>|{{Te#RbSy>r2t76BR%OuvJtf7CXz3^NP4f< zfHh{8Lbxn?RqZW_wtSk+m!SGqj+g%c9?w7!Tk&=P>6);Lr&2i?%|UPf03UMhth&kV3G73jYVq;=Ik z&aH^ss`jruyZh_@=&wNdY5xErm7ou)Ex?K$v5la5RTPF5yp}+KGcF0mUyuD=RbTk{ zlj%Sn9pY(Zw$v_Tfr>8&1J=6T5SyP4sh{V_?_7V2f8-}~^cC26d;Ue#`WgUbvLL&G zLX2X#&2*o(N}s|TrFORe0P*<;(zu;>{y(Pw0D6EptM_=W?!;_VEJGNqtvQ*DdyaFQ z)}E*T03Vm1^~irJ%hP(r^rXP-bl8wB!2^&hrM8YX+Dd|cp4HCj-*V^aT`jLg{{TIz z0N6_#GZK>ub@ZxNP(uny zW35N0{n7NRpYqUsC^Iwf6u3=dZxUQP>{yha^MfYd}0&NpX9W7Jxt}j{BtYHPBg;bA9^qK2~ z*S_ObM6_@YcD@G{UP5tJB>wnOKUl80+q((Z2NehK)X@I` zuUc{34&E817V&_`ttHdG2R-SK{{Y9le_C6AC|$#FO;5SJ<>sqJ_o~PIwpu`H zypFJp5-Xq7CX~K6n%$TENUnEK{{UG)9FC#?03QLn(QK+;kwyOi`teS+{{UG)8#c(l zyyB}$i{*okb5`xY<)v4b{ZRUv0LfAEA7fOQWb;>-?l;uc6V`wqW&+B)c;>pv%Zo%V$-MNT|6IsXaXzpLPQ5m)w~s3 zPj(|Giow)A?0@f9K)>=1Z^D2$ZCO-2ss;cRouiUWW3k_8*?^JPp z@5ImpA(6vMx#K-5I7jcZ_5M_`effU0kpBR!ACK~&1hQtq891)G+lxoVau!|duebjI zk4B&kTXUO>a(N((SE@z>JfQM6SC!j;uY>Bf>XCn}ll{s}OsV1dBvy1*AxA-)_Dwi> zwm6gK`Fq!lXg}*@uV~W$0OQO415iO@O0u+a1H`0lZlbv9E#Qvka~cJ}9V@%iKJfnl zb*qY>{yuI$3IMODvkN?ebM>q7lKM1G$0QNg>sk7j{CQS{Kk@{R>OY+Ta@wLKSE^$h zat3krtyNVLMA+ww&DH+^V z{CuDHmZR7D&;IQIam{&k9-0D5!{)9ZSYr3-yyqjD>*oIekZ}J1dbs^t{y)>{Kn1O( zu$7obG6?=v(0E$z<*&ZVWn&Oyh0hg_YyPqRqxn_;01AJ|SpNXMKpp+y0w~yZ67gL7 z$mdj<$;%{T2h)*V4e$Dx{{ZW)b8Y_sAse6i=0BLA46hVL9MVH9iW&IkxF>dk;a(H5 zi9Cw*9}<7dAHuxyGpzP*wYn^^$!mvHt*;bO9~0D4p;+3dO%9U6vdjy=!*g{d}KF!qh+G zK~Xa0c9DK^TL5DKnkU5|X{VsWu0zirLeD z;6JF zfA1gXKpE-+uq(mIt!o3ASQ^S5zNWQw{{Zz(O>P7?3OAAMRM+Gx$-&KDxclenRKL6R zs{^XjCz#Bcb6)e{>&vgOT`!v02aapNbieh_|O7q z@Wj^TnL#v@65lcE81qwTzwzr(OZQLv#(+I@!E(tinft~qw2Wu#Uc0BNwZw6-1z7Su zc&{JuNBn~i)PFkm9XtL$;`;vpN&wV*TWF+X9BRKicBn67jjWWE2LyH%dT;fO{`*x+ z&-n5mQ9vF?sSoTkxPB3__O-KGh68`|bSy%lb`u_k*PhdLD0afL+E;3|u zyWa!7a_p*gTj)s2Z#;Icr^CPNEPvlW%DIF803oaI_su{YQUM;KRX$J~wO`aDMUwzv z5tCHE<|NEQcQO@sjpYP=?DFEYVu!+U1Fe#5$TY`x+%I;0%c)`$2}{d z@ZPVfTxzk}PjK%FuL@5Bu=L;g7hnD5{#A3rzw#bW_h=;ai))GGeL@#<$U76oc#N^6 z`m@>0H^5~-A?aSxXa4{n8jX10{Kwn=x}W7h0%?{5OS@qLgB+u8x6-|rP5%H+@U#$J zfhr*25z@S+f8-N={{US@dbWrE03zgHLqHx^t22G31l)G4m;*hl)2wBY^b56iEE5HD z+PuG3{{WA;f9s`sW}p86AS>U(fH+Hg``MRlvonm5f@-&mC6iBsPrI^X49~kPyc2`P zHp}{&PaJ>8hMWHY0{(OXgxc=0abX#r?nn90Q|VdOaHORslPu(%l1a}s6o2vI7yIq} zs?~@3xc0Bq}rwf_K* zK|xU~%8Iv + + + + + + + + + + + + + \ No newline at end of file diff --git a/marketingwebsite/images/instagram-svgrepo-com.svg b/marketingwebsite/images/instagram-svgrepo-com.svg new file mode 100644 index 0000000..c483545 --- /dev/null +++ b/marketingwebsite/images/instagram-svgrepo-com.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/marketingwebsite/images/lamp-light-svgrepo-com.svg b/marketingwebsite/images/lamp-light-svgrepo-com.svg new file mode 100644 index 0000000..91195a8 --- /dev/null +++ b/marketingwebsite/images/lamp-light-svgrepo-com.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/marketingwebsite/images/lightning-svgrepo-com.svg b/marketingwebsite/images/lightning-svgrepo-com.svg new file mode 100644 index 0000000..016c202 --- /dev/null +++ b/marketingwebsite/images/lightning-svgrepo-com.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/marketingwebsite/images/logo.png b/marketingwebsite/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..74fe1189fdda62942b7a0b62166be4dca08c3e4c GIT binary patch literal 20996 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 DMrMnw literal 0 HcmV?d00001 diff --git a/marketingwebsite/images/modern-house.png b/marketingwebsite/images/modern-house.png new file mode 100644 index 0000000000000000000000000000000000000000..4c905f971a030c6b529e57034ba37a94b9fec0c5 GIT binary patch literal 529465 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 z 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%0A=ZH9I60U9$MXbYX78)}en#8GtNa zqJmH{0;Y!*OKK!aFg9U!=u;wAuPzUx4Hrfk@GI3L`ulq|jnMT|LEH$1>dBA56(wju zxTNQX24jewO6-O*XER=b`3yqN+4AEj8|qt%3MKNbNoGzKE6y1S5oso)_GhxCt(F-0 zkR#fVp=$WQq3`0Zw9ZHpyyM6VBBd0Rf7eUrm2YC)>?;s)}j0s~lE zF(Axpri{gm5UySO&HV>=;S=Ns|F=SpcH6*JCAjOC27m|+3WmMMGQ$m{inetfe_?h9 zM~y#R%rcWTXT-=z3VZN3n?||5zD>iVQM!XrcG`n5S0fVY{AO6v+$c0-E>$c;)EBb{L)0G8B{7e& zZX%=zbEL6_9E#mTu$>6eMI|l{8NIhpL$aup@i(ey!&jI;Btn-%K3T`Hhq4kqbOnY@ zAw>b1f(ih+iH>lSa45#TLR2P%8^TG@MAT_MfnmwgEgVS9-Luo0w2YW>G!qoysnp!~ zH;ynFEUm-FS%czhy)g--O1M&_QSPX@whBT!URJ7TuJ~EaaDO*3p5iYByc5+_Q_b+m zz++Uv-U`pUzGpJ6EzPZFNV}ms>_V#}D9!-HHa7uI%r7p%tMA@@004@R68+8DwoNlU z-;^`15TJtdp4w2aW|TnnX}p-9sJpvczwkc!6t+?n4S==<7}7je*H={=v!q2JnFvTy ztY2GIsjqjm$j&6SjlpmQ>*+J>Sn)527mi9xhz0Dh&5R`_^>K4`a%_l3K$(!r#7$xR zW5on`Y4`L}C0(meu~sJ*m!F@%a8Y?S9GNgSSsrbfBoSpFxD6=}SgIILP zDFbe)jQA13dB&2oo+Slm!FkGFV^+ z2$gB2zf!QEdX$NP_3en0c9#w*GCQL=D4DSFTe?DJWfiIO!3V!+$w*rO9oeF&OsmL0 zVw;Sib9ke(7CWuNO&ⅆ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

(AR(Pu!=!|1xHRx)`5HqP>Ld@KYXZB=n3uJ zg9}B40X~+>g6)C-&;IgngPjqf%A11`SPuHWfAdbcT0^m(`gcdZNR|0A z_y7(svo?7VCfrXfJJd2&WCVixtB)i)Kr5&bA`+7U9TZ7hBxg(>I9Olo;tbs6vrh$F zsFZ|P2P_TP+4HjtD5pa0Gm$Y#1v3-imzUWd2=crnvqnWQhu9f*I!QZu1y;~3YqLJp z8V7VRWBh#X4ForQPeJqYDHd%6npu2e99GTw4J4tA2h4eC6E^pwt`-YRED3WS>%qYR ze#@{wD1^xtmH;+K;Zu!g9Glc|UZZpDtbp)5hra9#CslzzXP~<>auvwgI!Ut=MOFhlkI6 z{#5y2^-tG^U)mC#P{Bt*I!pAwPTHk>r0EFd`9PZk!)MgKgB$4qQ_YhowH&3! zKNN_nOE2s|2hOL!qilNN!i8(su628pd-o6j&A)k1GS8x^+Ksec&(&CrNjQ#I#{~O~ zR%zr6uWY7OO#N*Z8XT#}dxHF&e_(fMxi{m9}!{-kl{Pbr(p$}KCTmjQK?EdQ2t6&4}q8zSM zTv{rXj_D3tg;5k`gq{xBze-NlM9jxCNZ2cO(&5aTjz@2Q_9@5R;gp7wL_Sbq_Sz0+#nDq9tA5nZgS?$aMWy1ip4@Ce)#w?#t$t_ zlTdGTwGqVFENs)%o5{PW6(-g6+7gA!@{CgmsuP>4Sb*>*;;I+S5&wNM!2@{U=I)Ms zyml_glc&G2u7E%+VSIYy&hCTzj3O!px&oBQkfKD`y+q^SJ{~ZyM@OqNv&Il!Y)p`RudTUw)CLGD@Vct`i2B zbFGv9t?^JfvzG=Q9y+*-6)MB56#kW5dR7w4V(h%I*~&qr5w4)5?j8JHX?Atmuw$pL z8KOWDEg}^^MQmOQd%}o;WW-CyvdHkE2%_^y6AKb85L%H9M&+L|G_TD(JfEz0o=iN` zDkvA=pU?ekKEcKYZV}}xmSAg7u(-SwtOp6m>WYO=(R>Xyp;?rV18)i))ZPvpSO@E| zN}^RA;s|2^w2eSdwMU(CI^I(+e#M`n85~F9}kF9f@=)$JwgdUBvgq0%8vc!T-^HLBL7v@Hk3Xr*V*Z z7`1Dfs+o%5Yi$E8fP^wghEXsT2#qW=%~+#HLIOyBk&a%YUumZFWSkE*P31a5 zv?jUM8o!2J;!}cSCWS67FJomP!q`eO->z}sYPfm(F1p;PJz{;T*B{aq^nm0j1sg@q zVcuyF3VnnNfDUqFOB(tdiCvv#Sd-B&7jRP*I@usFIdDlw;f&BsGJo&RCy{8uoEN%QU!*tUNq*~17`)6$d(6BY;N+7a^!%g~4%ORH(R^@)C2)0*G)uY)p9wB<=X%!HZHxom#BDedB zo=!zz5QEX-*QBjdA7QImG5Svoe0kzh0T%2)J>ez$ex+7t43m%?q9X zbd7V*T`3ef&-VNqh?Wfc$_ev@+#veA9BV2$J@Mdr%3BeGO3Lq0N>go!p8#rQQh92vHb`U{cPEF-TB>|!@Kvs{JLLfpn(R!Oi`pnN<-44DU&nf8ga-ex`yRYlFL>8 z13cw&m4CK>u*M^Yn(AR8cnM(9R2I`_*r=j_jS?Q`$D?{x%7 zj!xe`Z=ZAa*=L8f*IIk+6&9*{y9B#p`w!_ur&*3BP_)M_Q<7oC&;V^jRQyh!SnG73 zsMH8qHz@7xf(+0PMSlVur}ejOyfK@&M4J!Ehkt-@JKFAy>lK+?0^Q(|DK2n#4s?uk z@+b-v(=`OcfC`F?rW;d0dnDphS_jh*%q*NWffEAB`3S;Jpp!1D^V%*HY}+i;>fhnn z=^d3|1-+}2F&2y z0?q>g#(=Tx6P8*oB@mE+_JF08)ny7H$^kCg2mzJJBsxU!V0T6#W_pA{5WyJsiQiJI z*J3yyO(qHbievJb3LZ!TkjDH4#TrMWZ@zi)wbx!7vPLJ@lwtuoLVcc-eoG?~u;|@) zaTVwn0EcAen10D!YGQf_VEV+veufCWFYZ5kSPB9OXW1z%bQ^n6StJukx#?9IrrJJ> zuo4H;(W`-|EZhUeS$vV%3ZfyRA>n24h*qx@5dsnY(>O>vQi}{G2AgGgWM#vVT^^)L z4CRCC#hdQ11gwKy9Rhf}1pDck&CQwKa&I3vLk$mHYl5jmA;xxZ(GD z!Nwafr3hL<^&pXCCmGbVWoc^Ms7X=v88^BnPG?@@q=+}~*_{*u(!j3~GQy7B{!^x~ zGdvTW%cc9G%Dn$E8IJqsFj1syBbjX%Mw{@I&!LXBc1@}N-Iv^PIbG(vzeEor4xOzD zghby`p^kHw5K*Zy;4r4h(THgB48{eB^dS3oju-YcAG8K zH|ryOM-N8La@AMJ9a&wjE4C-b7g-Eqjn5e3vXl6k805!d^I!eyx7Bnzuo_{95xaw9 zk3H^?nHnsnqc`?rYyy&DgHq~*TB->sUAM#eBg0`}BqJ(948(Mt0S2> z$j*;75C#j%W%CHAW(dTPuvcyPPItVSA@nD046Zoc_D%BMxE@!$N{|HGRXU*EWO`#qohdxgS$sZ_)o@EhOw#`aF; zAOE9&#E`so`EspRVTdvRDWW?72iGT1bqidIb}B@IgUX|^%O+m6-XI$ti%^94Aqdjw zS>ZA8=m3Z#2%>PH>uM4Rt3bR&9jjD(sBQ8&HwWRvY<%1pc^IFWr3}1`pu`Y`;LGL~ zkLU`wU+i+b5oS4vq{?OH4{!i-wQ{D#b62G~EPYSpIg?dMBHb)3E&B$Yw=QhptF~Kb z_ng>Z3i(Z4z)sZ3L4LP`L2{HR;S|q{ASifmapSr*tareSzGx~<8WJN&mm3HiaH>j!84b4Cp3%v{vX|6;ZuC^QMBQ=}14IDtEl+4bT zm7$X0tn5$$!tT?IXC*U|9?#YRY50^ z2%<-677g9Se6H6fd{iGvDSPC%@7!b~7KRGV2I%XtW2d)^?Y(N9)zZ?^()#h^EHbe~ ztyb!b^Goo{qL*q=pw(``NZwI1<16bGl^{zwo5NGXvCZs`on=fHVjSPn$# zM5;!f!2ku|Z3d9jK{?1(F`Q?0gyKHVxZ_d_adh-DZx{EMoWPnv-;mSS{ z{f78QudwVBMv>kRPaSemND-|f1XH#%Cr(S8tS^LHG{C{g0vv{r4;0STjh8hYfZYR~ zqdc>RdzntQn}?sy<~)?1?SVs&9&q{Y-l9jQooq?a(mkrmqiOjhH1Q|HxZVV!GW=LpP;F;{dIReRi%UPxjvno^#;A`Ai|Qm0}fJ;DtX|T zyagQclE=uo975p-kBOz3cb9jmDnG6{gL+AD?Kl~p9_qb=h28sV`j%t!T_$e2#1sx@ zOP)TxcZqh_RdO~1!$(!Q!=Px<<7Fcww+}<7`-BRakm2rH zP2W-;4w@q}No_m;VF0s<`21Wp83`?9)45a>l}X>iTneT3NC1O9;swvAGKoTg)n~0z zj}DR$DtKUE7{wrj?nH`0pN*9wYey6X`68=8z5pMPppaOsW%}g6){UDtiFzaxYSi~? zH8ky5za}&2aLVfgdgTNumqcR#{lMZc7z_EZd2I}kMK`NEyIbjTd3$}(Dzc-Dy(JPd zoK<&v!v?k>fkYsbxOKa%u@U(cUx7@8m?pTn@Uw~)`m-Sedk&)rN)VrPJ2hfr*#I+P zLTvFM2d18;`~qf0gHWt2{sEgkUo?Z~=XiI7^wdwZWz1KY3juVm*@hBVZ7hobTq`F4 zoT;JN!HP)0BEVPG_@j=$dy-8Die(m9LzSYRkW$c>B_RU4zGH_Fas*a10lVtp@K zymI+E>#=wOF~G{s&i32auVfc>imb?M@0(m}04HnDWGSOk+-b%&tORrpb>fC$Jo;i!i2T!JW zTwg5Y^MwK`5eO>S^UdXm&r)Z}ghOpQ90gdMK;j#Xmck!IqQUQe=eubC<>zuRm+7ox z&Y?R;)PnDQ?|bLYojd#3W6wYTJXRryG3N6HI2$;L^XJd!GC6vFadDZjWq9I3MdR(a z-zGrK$A9ZnltAb#ysiEp3!MOF9^1IiGvs&!A@+!_}~l=cnVRQKAkNE4hh*C6AZ?I>61%p{}I@r zqXd1RZU&NtDnBNBfn9QjI zc?8?8`9g;KO*xS1SAAg7&V|*45LSB%~EJIe13WQAGzols0*&zx!Op z?A>2_T6lb-#ydyyk#yj?Cnm1=IVzD`e|hTb%5Qa?^tkvtHP#&rz@afXG#HbN z@A$79evQ2l^xwhZTK#wM;a|Zg=|XWC{Z1I~1s$TNH-r7&%8}(ks}>x!;-TT$lPfI# z+FOr=5omA_KJIvaF1Q~;h>F&=pZ|T;B9Gv;@qdhj)UTurW4P+KeW43?)Ux0 z-A$~f@Eu^`#QJrD9H3$WG7U!Y2*^w$ULkf4l4{Z<5CIx##QBWp!dMC7vpMD%3!%== zAUFtQBC${`ge!3jYPl&Epl}3jL>6k&0raPn2yuM`$rh2hKOuwLJJ{m=8i4nP?pg$kwJrB(HDeZophbK1=>2mos*5X5FYRw!rmJ% zTWMC?gN4x`SY@wg=*Kjo-s-ndEbs;M^Q%n;W;7;H3NgSiI{WBHKf1ZOQL0qF_{A>< zZ>f z8jW@$nnKYf6cj3Brvt9y==$2@kDtai_50ud-tzJa+1fxwCdH%Q`~Cm&=CvE_L7Z4W z4nF~Pge$##`7-XEPMkP_DL&4xTHO|UAoIK5a@aM-q_VF^iCglow zc#%773gFcf|J?qFc`pOD>2nUlMfXD&4o%%_ZZUQ<$^<|hPHroEy!fDQK0s2VI_D>XJHuo3mx~~h(B25 zFZhXrh5eGQrYxWvSqWSv_R-P^xDqha-6C)5C%a)2+rBO%F;@+Nnli(~9;Qqak&ZHg zAVig=wFEO`{0m>vz^EKZzKYOO@rm3)3WtiOqz-8XNYwTc(SgJ+$XhCR$PFr7KXJUg zSL7-Ci0o1etl5u8T!m?VFw8z^U&Bk)Xcc?tG+E0jDyt23?FU)49KBa%;77%6v2>s- zX4yk=H)@5;O42*5T}qRgtu;6Ixa2FO)fy^fJP9eFFV5yG-dn90$H!Q&(brn0@p(`K z@^JpCOt!mh2)r(~l`;3xu975}8PoHDBDu_+w=ax3rR_Vf z5t*so3S4>n&6i#}pGwY0Q}dllnW)w=RQk)6XfmG9h zp~N0X?#N;;lgC{|BAtYxX%eWEuE%N&${`SR!qqc^9Jj%?aAA9eU9gKAb{p7;(@oXN; z^ZDGu^&2<4!^p8?Pp0DO&q+atE)!|l9HQ4j<5(rh752Uk~CuU);yK0>arK+_hMSJxkVD!j6m^^fO&_R8_oXV#A_f8!fpfBy$R@c73+ zwsGka3Xvgy4ACh@-X&#Z)>D4p8`CFg($xnW=uvqxdzx1E|um9V>`u5L$^2{?& zJbCs5c)i2`CpR|_8-S|E-#+`dCypOS7JL5u3t#xBzdQfQzxURg7oU9cNkUmM^yt~J z5q#{(Q2>M8w@-fJ}M!t+28$^?zNHqsDd#A6BY6Y$LIAXU&N`!?`}z&Tch!hdu+JSS6Je1k0ty->Bi+zHho1{RbS#29@?yD+S~MW zpWZ*KSZb-$%vW`F?}N>8WZYZZ+hot@3f0{WqCzARsb+OQhU%d=!5d^2w<;kba{_mh zI9naT_~VL{$)7-02kZt26%%fwd|{OlDgjZ8vbeJ*1+CU?@6aQdV_gY5iX>UbSobKG z5IcRk-<$h2+rMXD+karGnR_!y*H^-3)58WuStd7Uo(aj>+|oU2<6csN(V3J0X0}o1 zw(je;2!S;W$}IIqjK&eI;%p2+p`gi|D&F{kcO$DX;;~=S!%_e-%04KVSISke9L{19 z|I))^FD3^JW~|i)`Etm13jOvzR(>+TV^$!oMYPrE)p&|U{p6+l{`LBL_BnLRiTV)Q zTTd~DbfmZh`_1OPE3IXLNSgQ*J)Da1Xobj|O@ql>j;+!as9po3L4h4&%So(|{lrJO z{D7HD{NiW#EmtL%{>96D^b-C9e37YgV1_($<-FC2jW{Lfcb{HoS;r~|UKY`MwN~!6 zwjkt{@=hWdzjn349(TF4$(BcHZ)>+w=?7BP=9QZ_Zx@#4M%XR}LTqV6+INe4(0J^( z09QO!5i0=z#x-XoiXL2vS{q|Mc0qavy)HW@y;g$`gs`#+!nS?|Cr%M8r!Y26vzvgq zJUWs|rbZ|XKkkDUuQv*hCln;K1Dl0%2H;GS#_3E_hyc@AT8M{fxqoV=>r6B>*nKTj z2g{WUZ@f}l9(x=jhRt_ll3iAJ;ONFS2SUSn2xFqo4o6=WzA7wzQNC;?9C*H4_nkw^<$y+v7gEDT6>VIF2O3 znF7ue5HJryfmXMHsxr2dpdwb`VRnVkli)K5RB%KV4C1%SFt&6&jrK8gfz|aB()x6V z_JoFr1xB}vODiX{%g51TpeLfcwP-pYPvw2794cF3xICiBrjmYtDIom<+>PUjVL%vJ z=5?X4V6t8bM+s^;R-k!61b!<57GhJD1sakk-=GIqBvH;7rxA5J2Op_yIP5yLJ;DF_o%3XJJ8-h=VpCftjY4y0t~QJ4u^x+Uc2$}IQ5{{Yx@+18=y9!HJ%zioS|8h+zlm4cYyo{}He~ z?4@7Ub5Ha&Esn)BN|y|rSeY5x=`uJ3ZfOWClLB3uHg3n@5m`twU7?r!7sG+Qw8Ryx zm*JxLy^D@<-*jhvZuZ(si^16EC+?Bq@9vfc^x)T-^~_G&Oj29Oz?nNPm%DUnkMVRD zkA4=Vd|*fObyu22Do6tQ%tN=66>WC-E(-}Z$P_@42s42=QUVjy zL3P*=K`1xuDikEdhIKu$IHQpT$Sk^+ax4k>3~_VBQ?g415B38B$wYwK;W^vM$r1Q< zM&QV9vr&WktQ6+T#a;Y6!U>=dznJx9;;~w>h;7K*Z@y727r*xB-^>-#fB!R|K^#bh z)3_Hvvu`e2h{j?4AyIN16%LEj3dz>-<(FS6Rmz|K^xuckhhf6EjI1%>noy%wpEE&V zokzYFK841}7hq`QYiQK-4cZcZ4DtCW1$wxm`raNIbgZhWYq!4F?>5E3bbBemFTpIr zy;KdA#6&K$63xDSQ>+*x#rlzDoaB!G~51Irr?8hAP-TGqe*@Plwl)D zR4_+F*sPcj7R?{GA4;s4t^~)m21=CcM~_i4(fAmf8%dNNRA(PLl415<&C)nnDwTY3 z3^+STi?Rs?uuZ3l3^zuNfliJmqNv(jeDh6~DYbf~Rxd5Y&=tdeq@(2!!jeqEyl>0t zDlr&<2lmM5UwX1!E)xR`78C9P4ukw)Z6usrxtF3(t`o;kDvV*QxoY0^d4=dfC93aWOV=Q@GFN& zh1JYtqNF6k5vcDU_sqWk_+6x2-_pK!^zO9(VGWQfb7sg~QPW2hsI*jiwVc)^3vqg! z|2Ecuqucsmh(ioV8I{-SmoCEEjsNJ@B5w1D(MJ{J~7dMfnAL1z;Ho0W5jfIpQ zuS9>7`RhwE{^rL7bW0~l78>TE3yC)+6$Am?Q^qrhHqG}rbIH!$}4ex3QKJNEOv z^OQ<3X2Nli4=s=k@BAYVdEtt=|N9T(+3l(q-16Y7((b9 zq>`EWqoV@DsZwHa~uZpR=I5HBH5O1Wk8`ldfooY@)90C|MkE5w?v&D zj&OL0(=B3SLam|UiaW^kVWEt!2H->-OV(7(82sF0dk;myqYp71hL!wdCyyOnU)kNM z9$74~e0%Q`PkjCh|1_1!gt1nLM{CvcsWYeli~s8PnG(p5X}%1}SOx1$t68VXl{xqE zq{xc?um19{e|rA>m%j8RkP2jx6Vrzl;hw2iDPxREHSk6Km4E;Ltsh(e?SJs;cB27L zgMu~QhI~m3xS}lgrHwHjC4-CdU_~GHyFP-v3dhlY{|K5o95L&0gN~gW;)4D-{_XGl z^yEUFmfYm1$|;`WD!a&ChW+;D)}3zeth_4)Wk0{Ud7CqeH3%x;P_dsU zh+86_*xKBJDPbQ6$i$Gf*{XxG`6TQG_QrHC7Ccl#_CbDsrCQF-DM~;psoi8OQeUtaeE<|LLhWm$Yv$zH7taIPY7?PHW9=|AhK2O(IMb2CFp*h@(9{3o1cRS zP&poW%-}KM?FV9m2Nv{b52qXkTa3s?XaRL60bmd&2DM^fz;L2gK5YC3K)1<1G!pg`JtohDf=qLJ)cPLCY8IQh?5;QN$7#(Jc_1mq;(>?8(K5h$ zsGF&=!HSU@qt4nV;&9~gKv};iSHYKD*V&v`(Q2f49dWW;f&rNu?0Ardkp$-&r=K2= z%ktfZ*(4QeCJ1lW@;cV;ml_c`YDutjXjvYChaB zB!s1-sTGLWv&b?qQ%kj(=^ftJ)Q8->tG1Ied6x>h^W;^%!ZFF>RTzx#?##?{FAH}_ z@d_nyra@lTX%X)-;e?Qeruc;LmHqU&iF}fq?(zT&|A6ng7gb?vFLic5O;y(r9;y9y zkfJ&KXc(Acn_V3`w2j)n;=KD&6% zj)Zy`iPqWwZV%hQOQgo~rsqF@;aVh~O-HlsexTDMz)f;4pG%}tRDhK?LVbp8XLk?i zWe*TK#C`$OBAtw*@K0b6GGtSU;`SEe2N)2R|L9eOLj#Bb6ad?Jk)!xLBt#(?h(?gf zVh+H%Hk}n|F|ZG$6B)Jzi3Tn&zGEVV;!Li4^YW#u7hax=hM`o!UiV00K7xCRPV3fN zmrg%+ChUi{wWF+ScZ&pdz$BnmsWCNCbJU7fWJNu%PY@;zRVO?{?Czj8f&NFgQKxU2 z$c#&^$;Qnf5#&W^sSOEqIAxpVdjV9tSXnVUmZ@&2^TpoG}fpUp>vW&}}J9kd7EDZ)Q-#{vm zN@VVA+{xzWXc56pi9AmaTMAgp2EjWEtaM*-aV#Nj`{jnuSSE)#GBrQ2*O1uH3x+9!}!5OD=-HQcq~ zR1nupKntFW!I-j!4F(hG)avRg64QmHg$9N}oo0mX9AsxK-5L{}1H2AGJvD!14iZa* z@QNxsOvho^OlG+5hnPIynv5*S#Lx?AUlLug&}c8zfViF%fqvIDQ+ZlbPx+LEN@i7TJ^Xv57`rLlV?cnuhFgNd5;1j(bcp z#yl4H&!yu2!5)(~6%Cy|ed5gV^=`csz&N=zSYDXl*eandyO57RdG0KD9K?=x1>2o_ z6?un23WX_>m>8qCUbC%+Mha;O?GPICa59&cN$@YXi6RUH47N%dW`@0nK~dCMuQO(v z%Ny!56=#AX3Kdzh!%A>{xj$m$JMg-_%N;WFh)$taoDb#UQjfH_(CgDejNa*8Z}Dto zi>pJg|3X{^rMpi$ib&}WYajZ?^b&|>8i2XTuaFTZ|;D$3^+Q~=b4fPtFN z^sMV9*Vp(j<`wQx4&pG4obu`><|?S>lQ3@15lr;n(QdQ2tEiaTAz%{)I5=_w4sYzI zV@6T$;&7eMi>_7=E`jR*f}eYE`M>g~Vo>P(N8*SM8T4w*Jf8BN)ijbSKG^s6)#88m z-~W%qH*YoTwv6XBoCb9m?RYRwlyYo6L08Gb>cYy|P$X5V)YAD3zzijjFdxs=+5^FF z1Q-PUI4R;oCMA>Tw}2w}02m9X1sE9EMn;d-1Y8A+`?)Mm4}8auu7CEkpGEKhXn}WF z=qLhX5a36hLT>!M1|Xmqpos*c1n~T*KOk9wJ7CiyfrGVb?e^8TkX7^>_2pbCS>?c2B6=VGw~i-lj{U;nj_fHy8&c!@{<{7b)g z?dsL9ef>}V#lQG(zxmC-_|tFv35M`%YsWtP;SbR|WIEt2^kZ(_+8p`OTStC_tB=ZG z{l%Zbh(J7OB^oN=MdS+q{wrTuU0R;Yq<;F-pCX@tIapm@dgF~ZP`&)CZ+??~5M&s* zfJ8qdnNFiW3;A4LTPZAJdJ1_%H6@1V3*iiu2IgaN9_EaF5jhl<1cI$D)@UQboO;@6 z3`)v&;xN=z#HDbwL)~ z;ZnQTZXaM=d^vMtALq|JbmV{yO{R>; zbFc$SAI9e&g_*OsK>kH zD(o{}L1LE<7CQOv;lCh9FgNE$qlYeom<+OxnRC%AY;l7rDcuDW4?% zaW<2sUFW;P-AC@qvVX&|O4DocR@3!?-Q^Cm)cvN}DEwZ%ZFPoj+HrS=>FcuzeR1-e z&_+GCG7f;|>|5_7?br@GYgIs*eX)+}P)9Yr!d$i8r&$LpAsxqlB9%OPaw(NwZZ$j0 zt4B1%<8C^gBtdMDh4eg&;Q1q~l~(8b&%NC21?%k|dkP{S{E(`%i*3+CfdY8E@Vj%LR~DTGzv3L-W_*AVZCleD==)cQFLxYTn0BTUFmj*u|S%o(DugdE0-@m`=cMG z=du+P4m(X$qQCytuQ0)oDP+>~SdtJ(6S8ONU5%Eba8P$#vUyOn%IY= zQu8Z|{cb0mPT@QoHI)=DCjEm-sYrLOuB^qvvFdIanuFSe`Ogd>bHWmYABn41E}<5N zS517VC6lrDz5nTMpBRe0STsxYH!O`&wK;j}#K!IG|LH&b0-WXRufP81fBF|&8yg6* z(uD$xB-~D%Ja!EAPx>6*1;hsnm`KEn#hqpoj-p0}x88b--dsJhUTYMwlwHH(BNBc4 z?Y9X|X5LC_h(j>0IeGE~lyBqCot;7sSJUyN{anTf81)Eh%7wUh69IR zZm(z2wb!xM=NcS()jsF&zrAzMlPm6?k92eP6I@P*?-B9&J-1yXr=sFK0)E&%i5!R~T&n}hb8|V+7M%im;JjB9dbl3xj& zYJdyS{f1-RFHE{Y7OEL$!Q?KUq+~zGBc%|`hC!KBn%+}H3?y}js(tTr$b9z$D@Lb7 zkM{3R5W#E)u`-rp_NGg7dkTDaKfU|T?5C$`EBkPjcvll_woC6W?jCn&wf!hhMT(`M zd`dEA{$QUN8k&v^D}8Nbp}mfH9MxcUK2oVKe&L^=I`tF=hw&5&K+R;D-F2C2i>*Yc z?;9s`xo3a&^Sx3vo>@s{)5S7@l;IM(Z1$lrfIOV9gUeh^sR#Rh@c`>cj8AJwDSBw~ z`tZ&Iml6i}SrEz7cqljs!G*+o{Vwu#N+YI*#veQx4P&7i2nQqp31aak&YK|sKcZVG z;)}B;R%->g4V+xIR%*$`U;j|ORJnfrD$5`mMYpmB)l!uyGaS!nEuL1Z_4+HXpw5Rb zg?~g)DZFg;=nB@s+WWT+2E^%FR4JTQ7k=yi`q%#k!j{0@c-Rl$0S}T+rg}{*Km9a@ zg+5*)h>hN@wH3=`9#^4MR3{8bJfb4Fq9eUoQ!18lfK9*71Up}@cOIWcEz`Q ztJx~Inq`8jjOt~kDb_tGKrpzFel$FWgBDsD!+Hhny)YbFy^O#VDw#hy`r7cYJ8bDsmx;V>TU!moe* zYnLv)_4~j7dm9^@7cahf^7QFfUVV)P32{KGYcO10 zTF4bk+sIR~ly20z=%oRHa22R-xDG^^mrl$fbWwMOLZwP07#CmwQGf~(Fn2Hx48cPW zF%*xG?V;to;|yrUslIYUfUqGI_Af6lY;9E3NPke##>9_eTEl;!NZ5cD@rNC~_dNZ0 zD$=S~YcIdLiNrq{^u6z?bN}EsKhkPca5P(K_5Y`T`DGY8AY?w5WCyZXYE>&&FJ8Ki zJDJQ}JQyL|M8ad7wQV%TD|a;lsv*MR^*lWVFULu0lMp(q6`O@ZkE|lWT!tEjgr|q4 zB{LW2p>mW>c)%KJE1A0oV0uR-i}TTW%1Io$hw85BAVGBoH zq-r!Je+^u`w^u@fhrZNkNH7AB zCEB-A28jfHsDpvv_+|`sdaPtw`;4`dXZp@BEQTO2|n{GNzX%gMBJi4f9YBqJz!5!Xm#nH_O zPn5^*b0(upJGgP#+*zUmHGYEEXP@0G?aFayo>L(5LkFBz0c#icw9~_LQFNOmi~;TC zzFsBgv;-0^?P@Q%2vY*qQ({cL<7(*b)VfQ1=H~X9)2CAiJVvA4-OWN_zEP`Swz|5s z(!+kWT3O2H*;ZgDqu!{61A|73$dl+Aj!@B1h-z)S!SIe`?gsh*Km?T5g952>c-Su8 zx%KlOe?J=!WYfNAyr0Oh?vKweuTuz8k-1+i(f|NJ07*naRKXafPC}&N6LSy`#jtvS zp!SD795vRv?GVL|{WzXug3@WSM+e?8*P^$y(-I=a2MX4%r;DY=jaxVdc!5h83$l?w zxFXrH2Z@;)piKiZeoHtvwWFuBB?=CIQRX1)n(lS=Re(3@VvS636f3R`w z^yU~ni%NAtQ3+LUc3_v4xoS8OscqZ6Hc*I%sz4U-0t?RMr{xFE1F0Mv(+GBI5Lq4 zih)2Ie%M656&PZmio1&rak16C=_E@m)DG!du7FM`q7uL#tspTOZjAzCZ+Jiu0OFaR zUBVub6v#4kz!i9(OG6hzeD0afk9;`n;pTIr-2~2crgD)`t1Dlq{$wm$Slp{_pz2J_ z@JKSjJ|Q435e!>9N&@X8v}4&oCr7Q?qG1tqm(bM4MS3LO4zyV+)SA7=Pn}H0GB{5o zQ1Op`@XE74x_~`&vD(h&j>7K};Sa#Wi5X}y><_?LqixH|0DMOit!*av@s06HM*kCx z7z72o?zL6D0G?AuCWZAKY2hkuLF&FiyA|YG?br>kS8W*Vq1t2_OsH&g1axFyanF^U z(gG4xW;!%N=|(s#|HDtNCbRimQO5A-_9Jo?vnAXkJ*}Vk1dpXqHYq;zMOCDt$ub0$ zG_+VhPtd_sn_d=H25>2Fh{A zq0Cmio>1>YkK9|ld3R5`NB8{D-G#V2_6hGHB~EX0|L$^Rc;M#a!Q#M26I`amv?Fau znIh_2-gBL-oOe|noJNtRRpS-SD_XwGwT;K4Kv%`GK(WLPiq29)P%a!UNEQYIg9fK1 z(8snkgr6dOXND0u+`4rOOpTcUM6*~aA#IYhEf82*oQFbSG{`Q#HbGz+1KPr1g$*|f z2$PWXqK&%W&f;R0D$*_4EUxOMlF1=nidw5}#y>+FgaY&fRYq}th00y4NZ_$vxfPE0 zf=NUp@k_mH=qzD~NcabppdY-6u$Vj?al$TNB{*&jGcx6|!={uWCU@;n8+C{$q)+V* zykz1un`mTsrG)&soAi3E&VKVQ6P&dKlL;G2O{ln$G|eq773d{g$dSm-&6)dhHWs3< zy>{W`iN|hSzx~Sd=MjfcLqb8Jm>3M8S30I|Q>iq2G`_h4cD8a;q4?b)G7%RZW<>*6 zZ?g4(?1wIX|NB0O3rpr8*y7yNPt6sw1a+f6IMo34BcPH`4cI#QsU$Q?x4etf^lmO2 z?=(tOY}gybiQj?UXK@#fuwE@*e*Gm@rS*8WUfepeJdXqKAAIL~^c^dQSI)mQ9wBh* zT@7B`xOQ_;?>C43xIf0;OM{*JQk|d@JH;KWd7Jg}rMK!(?3>rG;pYP_GgzP78(XSL zvw7z9`stHL2qy^xkjo`9Ddd$H93@|V@u$Uj_{^#Gon-Wl*Iqt#V*SD^FG2`D{i)xI z#6E@c>9Mut&wl22sP@j@E~}|xrHpcWsanC8+CTgJKOra@vR-!4nw@T~fh&2;_|YI~ z6^lhI-@>q)^cey(HlP9bc>d<~JK|++HLq!8P@x&81jyX27(FofyZuAmR3GHRgjmCR zu+am$@rpH|Zxfl`cq0@`1w#0dGp!y*i%k(tB_@^lA%xARPM(QJ2X9=w^6YaLdC0WA zetY{H-}>&>_SVgfjb?Y)?gZMMeoHn4!K=5*cyYyTEKG5=*^NcR$SZO=xPNSmV8|uU z6l8h_Q(0f(i_D!lT(K=K5cCSwX55^BdEB&OQH_}-tpHuw#N)nj0JGa<80vIyUXs$B z-@ls0t32Y8LyJ56YuU-a|CTGC5~hW?tXx8Uy_<%6r%Z;j&V12*WqNj>n4Tx7{g=d5 zK>qDZ;1bM%)vX}ZL$#TH+a*Anh=_$-(YTDT;DheNNU(5n;Hz96!vsX zMtPDDQG(LgN2x0{VJ9q%e8qgp>6?C>U&XVWqq6B|lH$797*}vGREb8+9XG?G>1E2?oaOO9yjIvECKpOZvRFqeafg@>- zyYskOapn;jlwi~hLrrLyS1L;=mw|*^4|xyn`XdCVVeo!jiXehFv|Y*&c?rjwn2dtX zw;3x+uM8>@a5Kpvj04gj<}~+cJ_LZxSB4me+|oc4ykLxga0cg26vpB+jO!_Oxe&0y z6X3+D*TNHJ5K~V!wgDcA<^7(dO}p%KX|Nt}4hzfD5M^?fpRDgeU@WzVJ$We@qvF}9 z!+1+JKy=ey6aSBr{vgArnbty0DcZ-h0;yUL}qYSYa5rix@z4MATdh_HMgdg^_zy%rajCY9@#Bdny&wO@U!&}y9d0Banas|mEySECGhVv* z*4f9;F0U;Q@qS%cc;Z}$wKz^HgTb^yiVys`{1Vjj?2}=%W8w*-bj`o#z1X8-8hVNW z-`OJE+R1FbfF~>t)L9;X>PgfoVu|ScKlHwCr-362mi7n(>TEiUdg*v@*sDQB0=>b; zjobZp4PWY;1Anu$w~$T2vlTZsF1#p!qd@t0k3?V;-@bf>Jr|EHPs07qjgaAzA?L1p17fJPX;QEyP$ z+J&8>qqtvg_4ew6?qB`zj{-^$o<7 zJ|GGMtWdU)XIpS_dG*+lW4K0LD9q!(wOXyC+Je5X$4KZqvy%wY5?eiTJek0l3*Sw0 zsjRu?A7KhqMJ1f2!oki_XFft#s5|a)Ot73DQH}c^d}8_)mvCng4DT4C6v{dDz8mgC zH)k(@IkF1(8LfkCzlUWCxCZ$ts0Ccf@B_pnS(k~rP+NN6^&0x@$H z1ju&lU}ZjVIF{DC<<{8KwoDTT-gvhcZh&UrrY#3PKl^Nwen1@{tdm?1`s+%dX_Njx zoY~2!4&Qw@*Dwfh-bjx$WPDegF8c=p8qE`sg+M?6p%n~Nd*~0rIDlms9XCdt0|+Zj zswkKe&*IRl3_9R2I?@2^12VXdCW>X%qo-DAqx5>B!)^<+;5q4cr!^{1YCs$8j|p(s}$v1B+MN#>VP z9>Mhul;YeoAHWua^3%!0!s5|*YHoRDIh9VL)WUYrW9Ob>To~uo^~tZD>$D8CXA#MFw6$ao$nN=5o;l4##~v#f|<*o`P>~ z?-Z5_wMI2wO+~{}jQ#m5H=jDU5Q{}Auw35R-noNu(B&%&h}Kzg0lzScI7EN@rJtf> zMgoh4<&}9{j03{BD2^thrHyT*Pks!EQIG9m9xRBNUtIY4E3dYijYK}LCdXqMDx!q@ z#;klao;DfRPoK7-M(+@xB1En$ym5W^{Le43_3RE{f+=7ip&M=@>%0#j-c6U^GDxH` zbEzay2L$nyF$2Wi(|3C2?I}qkjR1jh?EA+(81o^HRf(F0GyMK;snJam*Cu>xbH^XY zi^23eKs=RTE^DUW+1mZV5C5j##3x&{JIoCI5nm!-QSe>~)W<<- z_Ur(!5X>d$zXs)IHNw5S`{jNJbK0cY1f8SJUNsmjqQWd~44+1EzawVfa(UbxhtFL; zn!!yce3_QRC*0sNfv1IVYnle*y-TiwQf8|{iCpSHrvcP~?Wj=+Z1O=F^YaCs;53FO zbUgzmoU5fCpefXZg%u10Pg&@w&MKTl5JU6T<>fP{P9rngy0d|mHedu?u|mMU4iTtY z!s5+Z!~-0n={@d%wI&P%r74dCN7!43`^2z$SdVdfxd-qTk+ z-olcGI9q-ErD*NP;v2qS`ZJPe4-jC$in5ZBsMkAy8EEhR7^sx}!|qda`;gY6YJ*o{ zY9bD8X3V68VLuAs>z=%8BKFb{*gebHX#TP1~>3OzKcMGf!OM zs<{D@Br#SRE#k-5U4pX_Aa1D}*jeOv;Jb$^Ion><)RRPr@{`j}Is^3L47g`!cZX*2 zJ@^O~pa3FW1hWdi;9v@DV!SJ^DJ1NGq_!X+?H)Fe(A_S68u2R~P6Wg8w)sRc)al0x zf-Mp{jm19p5{TU4D1c`w!-5m80`c`+Ha&;mfE2O;#2AV@ia}z(S7!gN*=XeQIjjbd ze2U*J3~r5W108<#wTN96R^4H^n5r<8N~eI?Twu}))T>T9Z5eCKz=&V4l=p4uASa?gUjV)C=E&t=;$ZQHV#QK5H@9i zAs76&R=m0}hl&hwl%A`+>Pj3}>cXx|iKKsIRoHt9Qi&rj# zZ5gagdhYobe}<$7Ki~8i|JaCyO0o5Wu}+`88C-eVh`5oZBLQ8_BnA)5UYHQZAIr69 z+NY4W4MqyEfTJRk2mp#ttq7qK*rx+rp-oOmz`Jmy>{Qu7aT*}X)B24$DMZW@qj69( z@qZ9=9o#j1erd1pFX(;wG zPjhnx=%D06%r6mH#1fKPVFMn-DGsOyxIm9D7~0s{Zg+c$I5%lL|3wMZQn79Pvzl@} zIn<|(U|F6M{}-Hg#v(slp8m%U|1bC3w4X{0Eb!@ zDXHnAInWh>)N7G9bDb^GuYT$OKno= z!E}DkDUgPuq0Bl4o`q18(coxnYm3zk5_p^wz?u|`+juULC#7Z) zF-DRVZ4CDk5-()LD$ox@S5+-b0RDEJ+- z92?;mlP}OB5oI`V0}Ao;niIAvJpeN5Xm_6#I~2(0CwGliDue09P4|p+9H?Xnw3Hd;3U~|+F z(S^a4_1jl(f_%{L;slEWKZy1yxQLm{JcWW{S;{3kTT;jf_@8>}NpXJBC@K})$DKBM z73{g@2^LEnQVd;F>5c8ZTbmn+Tp<)|)jGp7kDth`-RZZ<%(H%Zm6X-LH z4B`Pc!u)vsPBUz@Q9VYq?LG_XN+9OTEzGZ&@l!NFZ2!v8)Cp8Ou~Io7Dc1-ixLPn1v|9<)_m;u7cvY326GY1C5??cMJxD z`5XCCXw;*-DJywJ;ljfkMm-oe;nsr^8H3r`N)2rUbyAwKGcJC5Q!~j9o@yv3tiyf= z%`XQ%ldO|xll!{%*5A?$q7xDQ${p=(nC?b{*$v-}-FAl^kOubD!Ok#<`FFk3PbE|` zT?YVxb=?7+U|E;S&$DwFPh@hrV^|>_Ig0y_}ol31LTBH!tngNqC4*li6V2(cmcksFmBz0g8SgrXcGGv|!ZV$bD z@RFyNP3RSDp&cJSe=v`(+$UUbPoC=g_H#G%A?gn0fuW+)T)(-5zM*<5r@NyMGf&7V zTJPOdSBVKwL8Kr+WFXtLYu)RV;|knMk`^5{P8*XEG`*Y3mE;jAAy_88}B zpf?ss9K?EN<<6JT>qZVp9vOdx2gtmj2F%R%W(mM&melC!U_1m%N}?FYrX>j} zy)rl&RBxQQK_2>C`K&D14dX~;+vC6pm=-6%7KaFv_FpJK`8gP1L5EFJ?NX5!(#vzg zH&7fSPw&xsk`r*%x{gYsbxKVnb5@#R8?c{(;zIxl%>cdDmv=Uu+8T0_Q- zVIr|tY+Si|2XN6oY`6Qu3m3#w#KOe>FrV3SqzD(d2xphiLss+ii`Q@6RG9lnXlZ`w zn?HE*>aF6jqjUHtLtz46?5TJzpPhs2OArs1&Pw3VJ+z#|p9cz>fld{9gYjVy@HiVH zyVw?CLg0(1!>Rdpr?uN`01wt9-ib~zuaJUfZ}N_Z*`*cQZapK`1z8ul;hy1OlJf+w z_x13?X%0p;5!jpC?`BO*x{=PJ*9d2aYzJu)j1K!L{*cfe-;w8)Axa|>!-5&XX>9tU zYDga<0%Xb{rLe*9D#;&5BloZGO1a9<-uCVow0KRMeLP9?NC)s`h}~FCdDGyaU7%e0 z0rMEl1(7;1MH`(#G(DH{he?MJBvDae4q-+9Y5^;%?n6`O1Hbk$6o+vUaP0Ww^dVD{ zUb%JsTDel(-rmOdIfXOF;mk5AB2@ch=nO^T)6VoN2xSqX5Cgea*`w!JQ7~Ik3{nP( z=M4T;VP=b_4}TyEPS$2KNUVuBM3a#s+u;wXxL^K3wWftK>!xX82ddB1u>s=ja)LJY z*VwLaja!<&=y4T{7SwBc_njsvnMtcpf($g~IOj*_AhEo%a^m<2AQBV|y5|lhD;wy- z*ks$U7J@uRgsx_hjV#eLIfWQOm(#C2B%y)!4tmnYlxoW2(9$Z0={L!u zo7428B|c=P(~25FiD_q{^en?b@Q^5oESrZ^f`O1KWp* zQvr>@`*sYCi9`}OXdv)rn_T3I#XZr$jkkkgK^r_hw}PXRV<*>d?$jaPM42F%E~wo; ziuqq$#%ApnQLwi*H-QbL|Lk&LdH`L4lff4xCWD<;^wf!y5N0;-*H)K$ZJb%*2A%AW!M8vnl$RNVWKd%SlQA8C+OAPU<)9LWduG{4jV2@SOH{KNpzqDN$N(seXokdokl3^D{kwT~)eAKuVdt|jD z1C-H`8M51<*O^YJBET{+>seIe?Sq`GxOu{8Ei9zL`RXFJ&55BZCmoR_J1@NfGK_J( zj-48jim;8C%Pqr#42FdJ8etWCXQ$p7M(%8G=JuNGC;=}7D!F*|&c=4@$Irh+XfPs~ z!{Wkmg@b69Cg32KP^T>9p)Js@SXw^R=mgBsQTs>gq zn4Vuv<+Wb2hNx8zA2N#_Lq*%b9yX~RtrSX;`w&A}3EY`O`rFzXX1EcM#S(ZT9|17P z=~S8xuIQ_E6KA+P0FQ12w%Hn337WD>v-_opMJzA|M;5*}9pj6JZbhn{jd z%hTwou@ihkECmPjpGk%x4NBmsr!fj3vJO)YD3AymTL}z<{R%eLXcGK@+Pi}}Jgo`P zg*p|Ax69!LF{FSw=nrfIiUjbzsi94Jh%{$O?o<`lPc+yK%o8jCP|r=sFMwn2t1k&MVYY_tg{ohm&&aLoECDZwn(}7{^S5 zNrD9O90E-gMD$mX-Yb@a41HO<3=m&n8m{2os+*+!tqz<09WE)4MIqRSJpyvF6H5jd zU33(v5^k+gH(=9td1Z+$aD=PSeFZx}sE!l-2oWrsw6BM)f}gpK17jeFa9Q~6!ABJO z-8j(|s|P<3s1Pe*Of+jQw>Gw9&ySoU5bT7yfQG7p8a$nZD`J3h;G{}$DtMLPLlM46 zchRv-`(!+pWqCS0SaZkiB(EY>6jz65ii7#v-oyn0%h&e#G+Ukb_(YfO5SIV_A zumXDm*ud;|TOA-9c>`<%tS}ts&i0l71bG`PynbhEdz13fW&0fdt_L68C#M_0+_2(7060y`TcbOq@*bd3Q!T2Je+ zGT|A~EQl8Z)WN&r?*U_z?ihhPJ|O59)G<)Q&=!mnodnSWYKNrrMrVR^wPhoFOK}=R zQ}cyT5<~@oISl4y5SYs8Xb#J7jc|bVvBrYhaZ>e!fDltiKmmH^-Wb(UN#Dq)4DJBT z__^H^f#mei+%@qA%_MZ9l`B;V`H>R4B;tA^Hl04!dih&S2Cv-W5v=xr07LGY)6K~M2uoG5sIbd3n7{wj@c;7 z01V(ZX#rzBi#=vMzgMqe4p48REZ7Uz##?u`mzGhLsh|eKil6C;ejmo1kSM(W0Wimo z9j}&3SFc{3Us@@bhkyM4{^<{X`25q)JdMa?aiM@*B#!qjiCGld6e%dt>cs!jELqbG z;g^{bB1rg?#*PM~UyNl5-WrI}Psrf$;>xE{6sCQO?+q@XCyh3MM<#uxks=LeiJ${J zxOx+YskgSAMtBxQ^FS`sKuWj;=@K#qEgs>gUe_P&r=r^C)`;6SI=m%ZJHEG|BxoRZ zdqWTilpYt#)R}z3MGm){q=dR?mjT;g`N)sc*^C$%mD$A|Ae@P;MF2=25MXYGhyW}Y zr{^WK13}=xba4^f1;XifkicO)%Ysu{O}vXr1I%v692)@A8etGEh>ZWn;~MH6zxKxK zR)2}yfG(%Z&kQB)N!|RgCZKXLYIGv-2K*?mz|Z5-C{Rd!ge$e)*2ZlaOUL8*NfXvMb+v_(Cb>P(@P#Y2|D^n|+w?Huh0VE1YywJ)N4w@dcLV5My9kiGqYfUcc z2DG#Q{}H-*@SelKcfa$)?|z4gq>XMNW9e0lV#x$h?x0!m1vS>*Q1cy^4x2ugx)4t~ z?G9WHxI2?Z>yu?+G!=>A_m%+5^UG_%%#~}`*bE|qiKzTcKfB>{b*Ch&FyFG#QbrDL zy8F72Ji=Bh?yTuK^l&x zX~YYfpZHWqZyB}=9LLm^u92}moUzi2#1hWnMcxR|R6qe%enk!1v}6p{TV29Y(VxiP zOGHzsH-wZ?QX)VBntOmnFo;9}u>;6AC^O>$fI+`welA@`R0HrXYJlO4!a)xhMZk&z z544@;XdrApFrSHM&7A};u7`@x1V|BfgB2LM^yr;YEIC<5@G8oZg=B^$d;-J47=bx+ zOrrUDOwiNAPCZUcWRxhP1hr37d3IPUEY^CF+D`Llul#&_cdHw~;t{V2wxuF5=HRCno~N| zp+FY_%mfOWAVY`Q-KD{*a(jm>jSFT6Fz@aj0%LcR2?Dq)?JXen zMPAW{7XmKPL*{}v5yX)SCMQ3YY>)IhQ%=mb3CVb%gwhPCkS5t+wP9$q4QGXrpN`|x zvS-m>tT{$FQ;*RbLz!}h(}ksUerZHpQmB4^z~W>sw=f)`^ohpI0NHJ&%BBPM9cf~8 zyztWtIJ3e@$ydJeXFv${hn$&f*uG%_rwFCNKt7*G1q4KjaR+6tt*rsr@TsI($q=rV zT^qogUSn2bV5vParUrD|Aspll-8M$0tnQfNBI-7A&@NQSC7hxU5aXe!21Ft6Ab@Aa zZ0(_LApn`W;&qkyscZnQtSoKq+?1{m&?as{tQ+iOBsd1kBPxJ$f<{^PA>!jB4hYStqtM@L&_bb3ng3zL8j zkI)a-rG)vC--=ywg@6b_^uQ`zNP;tyikSe`GyG^^ZE4-%laoiL=`E7a!V*;xtan4< zL@0v!fI)l&z0?%egDe}MTSV32J+>R@TXf(m7506&)O6Bfp-&7zlmk4FWg{TN7Js|P zsL_k6cCE~&BR$z0_F_pjK)o9ZX7czOPJ}wFA@N~An}#-NEsAXb^^ zU+i}9VAhV_4$FwVxXbIj0wl0zqT7L-YNZ(rC*#Tai#A*~}hal+T0NIz8EWEBv8-<{2^L?!~HVkm$YKae%@ zd$@`y8#92jQ3yUl1A%syvh)Wyf#G0Ufn6b`B*Dona8cMN8v+_`GCAP)s4CIb6^hIz zJKG@?84MU}&OJPON$bRy$eJz@(q5#0yPs=>@PN>AoVo%H_xZ|1f>@zBE-u*Ph-MK*OXc7vKtX$zE-g$?1(-4>)P zlbQ&f*#Q8+RUr7ZpQZ_@(D~4#Eilv2(R?18)i7wJ)7@mDkASw(Bxp#WR3xY=@8Zg{ z4ywU6l>-dJ+@~Dy3G;|qKpYkz9BUWEZzLFcG&5j0NU#ByPQhlg;i4e9Y)hj|9Ky3Z zqd@>8BtUSE5%fwKY4!r6fmY*#@Be7KKI&BD*Q%oa&&wCn~l=tJvI~~XbchIZ= zd!jx@u`Hq-Gchfh%}YQ5d`;LrkQa1pr$X)*vhmrj}Zwsp8$$pAwLWxQ@rmOH1oVj-hEqb&2H^4)TObmWOIo*>Z1n z@ORA4!R?I=7NBeibz4np!Y3Sm${BybKoArTd4Wb3_QgqSP*9aCNKiLi0^bH7W6uU#u|>aRM;@= zL>ms9Oei)3%BYLp19U@FWC^VV4yN#Ww@En+BWpWeuhlAm4VW7F8T)N$V6i>|i3hPR z-K1+lSjcO&^97p-l+k%eCb>rwT;ORInh296$nnSebxa$#*`{W<0I@K;@~n*Eaf6}6 z$l_kXE*P*7QH(YvC`uEUh&AS75_eclJodqc_(o(9UT&e70V^qSMFf{SeqXuTz`3h7 zvm>wry#bmee&R89v?8|yazekcBgnLh$HGV^z`0yOSLhR&|5+Gun-T1sL}1`RS&~?Y zvNI(#VHtb+-(XwoKh!Kh*F%f|kcFFm8<2=;C$6`WxG;`H@fq7_w4`SV&EPa zjD#^l8d?J$`h+gU?AUD(1rmoxJE$KS_1gXO>x-sXW~F->VHver)=3`EbSZoRZ%1ci z2_$}KLK=y&(nqt8y;dYcOd8)Q<(##+2(G5 zrD1CaV>TeriXzOXRz?1?@BqLz?Qu6`+ys>Zv?PebFgKKrGYk`#)Cbmq2?4Xs0p?+T zQHFBzf|iqr;zWHVmoR97J>Y@d(oaCbD4=cL7~>0|0oCmNQHVQ$2RF8p8~hcy&?OVi z=E%&W2PHN7qB)?WF7G?$#=Stp`HGtq(;~=EnllG|h>9+dz#VpY3`nS?x@CGydu)2= z?!+{Ym~Z3n0WkZz<_L}F6)FY|DlF&Sr?F?DGex(pE&9FUwM z!;=|G9&&O?wOyI61i_p;TtTxhOrG5PuggFCj4D8Fv}?_f+8#E{wA=#K;S@qEW?da%)-x82pCl16qCq0D;Pxn{{9cV|9#KAA3+5gzlj*DMS{x|aXQ3=1Us`R=X~S#Eh7(+ zMzzL^++l7byypXuG!OzTJOBZQfpi7}jG8x1W^IP14;UO1=Q?(S5Uyw(jWcEkVoX@b zSQawL>>IK8&@Od648ny4VM9+_r?}~4j6xW^HS^fM<5ve?jZ8=wnp7I01;iV~!KWqb zj3FCG5dnDVl1=***gVh82xvn|OF`kCi* za=w{&ta4XXyW8E38xR8I7a+d?2?@!skoaOq@PaR3$&!T-EfC1Eka4#g+j19G)m2?x zch0<-dFFZM_m9~7IVXoZ71**@p4`vcYp)?ztXL7TVoh`gsNSU(WGFMYxi?GxVVC~t z6&CLJN~PnBXTa7qBDjD4n_m)m0IOb|eig~Gv3l(CPn_Nk0n1i031}6@0%pE%n4uyu z^e3jhx6Vka+`xk=C4~!0Vs9^9~GL zTpXC&V380QC4;JWehqL(R;fE%4jdq@}QQ9I(bR=D#*4dZ^x7OMbi-U2-Qcj|n~OIm?^h=}kEbf&c@8{uZ+N8i&;TOE9jDDk_rm z8h)HdD6lORg#m&2;1AuS3THjDP~s9YNH4}j8I5M4*n4QY`cxz3-l#sHKHF7R(K{y4d=Ci$LDlKRJEza{GtB<2uzJ8UfzjSoz(beDp_u z@V9WtET6hwV1qlq+~3}L4*1ROUG$4n|MHi=`O|;?7yC9mJJEh=@vCQFt*_sqHxQ!) zf&O|>yIqh9rq^1LLj?i$`RAYGRGL|L3$BVKnRbJ+kV5q!4X*V|R+hZXc$g$WA6l|n ztzU-55hg8iAYcS(&e-7+H>v&ha6P_!D(Tt!N+?CpAV>4kRGRDj;zBL44d`}()&WR1 zXeAm@L&7q%pxO5nH2mO%i9pxP<{F0EmC`dqJpR;O5xN418=!))lJgZj!%O{ut-+Hm zA(xz~*E(otGmS^o< zT@g zhZ3>TyLYo=svBKv>Q3z!Xqpf_QbWbfz=D;QtG=So7~GQoJeZoTdM<0=*ZQh!{bn{N zghDerMz=5)BioYdI#!M3Y#V2;4rdJ08?z83JW(%q;*gbL)(x1Y#mCoa{Rauru0-D|1S{&jxy|E-(jSs3*BDP5L z!BK!5Zi$D^U(Q5whr3`NPCLx~MmDSvD0+=iTL!SRIj3?-3#{n-6rB(nUSSwi!z}HW zY$t#vtAXEDpb3oh?9>sN_)@&dIM2eEPywtE@{Ix!O--TIf#C&7X-8}_EVf!3U&rWc zK_%W1HGR&BAMR*8U05#h78~UGH7OMvi{#eC9!BjyKR%y2LM#!Pj3tZ_MnKk5YJ-?3K`4FAC)* zMPxYl{hc(5feC-QzrSwi@0L^Av(tu#p>NQl;*IytcN^y*?;<7Kvmj=TMG`_zFehIWh2MP*HxdhqC7YXI0)R+r{}^{c=9pZ@1R zVKsE<l>XMDwFa3 z|IgnrkCFbv46|S22C&yk3d<-W(XkCDp|1W?wXQ)F3PDA9uciIESL7#chR4dNj2I4m{@wz2MKJP>KQoB&K^8^ z!1B+tTFSC@(yJTmWVo;D89N>(1ubL?b6*bHiynu;6H+?EtOH3b?lWhw7(G!wsxgPz zMRulDdPHEYhk1=Cyjind7do4xUfVDgYSlfw9PDTGrcXhKZ2e;zVvh$i?ToBri-t-u zXe9D73#c2cEZ_4H#+eqWJ{rkT$@VcrWMd9G1pUauRnq}FBvZP2g*(Mr_qQJ*HG2;9u#)Et3wvN(C)-u_SQPq#44dIwW*r){H~Kx#>$gZX^k|opL;WN(hM*T|A$I8VtgrR{(9|;4}@y zX+C;QWoz_Lnx}P^ZFj3P(5{_EO)8t9c08pc0dv^!FouZk6;0BZ6)J*lP)b_^(;H^( zL&8!30!tS#g;uBgWI0}fD{fms1 z{w$|0#fXwad23BTG;oG7>T%5qp<33Gd0QMU|2(BT9y`^-$-WMIuE9yfjQ;OY*-nNq z39XPCRD(ERhP!}fHkKH#)i^;zdb<5e^Et92+J?`u4FWwJtp`|go7BBWb*Q%(jp*rv zh9Pbkzh0Pi%q`6&jk|Dt?}x+r3UgO8M_ac1ntvyVtUU`Vv*y#%elu-l3JQo3d!@_9 z5>cKJT@AA+f$4iWRnqaRUeMA~_O(oWO@sl9gI^)g20Q(UKP_1clEO(wzi6SSO5S)D zqLmY~ixXi~DJHGoH5ej@mNYQ|A0o%n11#2xLxW1~APuT<;mXq5-SxYy9|ySg z-8zKhXFvOSTdbMT*eV)7D8IQ%GaSqTDtwAI5v24Y903Wu3R|F#o$7I;3Xq1@Pcqm{ z2acsZAT{xJm2YaQHN`0ik%cM*-h|*`NtRjIloC;>2^QU9YhBm!;*#+czPi1;v-$F+ zL5>z#v=qz+F81DWia_x?N3fJ0kW%3lCT(_$84HUnY;?2v`Nl*0 zwwJzq_LLT7j83|n7yrEvKZJDPW|GX#q7x(3YXaN+2$h2PalwyN1P8W7dNB04Ym~Kv z7IU$^6FEE(L<}-z?=rG?`BRpsKnn1(Cg{**Fq>;DYwXXY``Y@#qX%~Yz``FXJ3sH( zu6qw2@I&Q`=bMk8d?Zj~tghW%T3xcac_~)M)kBxsn3QqY-1OA$zP+igKAYP+aOH8# zu$Fvo?;p%l4=p%7J_+R@29!hr(!7VKfHy6)b$Gb2nro0WE((A$g#vTRqLC~~$p-)c zKmbWZK~y;_y0c4yN?{AUQMx`~tDs}dA*RtU?SUmz)0?%gF=gZe<&sJU8P%-F%~JD< zANg6-H#K$l-rdlUjvFS+l`3kRRuoSs+#eY~XDLH>xe%GTCt4Pxd~%Srr$B7YvqOx_ z8F4vQCnP}SvN93ksY*JWIEo3Vi?b$h4997k#Xq73c(sO>ma7=|bt53FL~s<~&^r)S z3_%u_U~jRi6YkkvdVF!>m?=wE(laPp#y2kZQc7%0u?%7K>Zfi>=MW`mM;93%BTifn z@G^AH#<;3iRS|Ct*sccBaI)pMl*irz^k#}r>l6EtF+_sp!B__R9c35>TK!bQ->v-Tjxy6TEAY&&e9wT%Cc$$XEq29 z`6@H^PUsy1RI0kL4{Cg2t+9e4pWG%@_jDwl*77;x4bRaXZ-jR-yF`&qG4pOyBO8-q zL6Ik|)NT>LdR@O`4TmidStcs~3RC^LM;|^o**jT0aCh&Ct<=u=LhRIwjfIV3h`}d? z#1JDMJCy@M;hZGxeM~wJ))}HoWc4b-388uY1{VwzDSkto@9-%S`2{-OMvnR{stTX)9@aLr~$5H5# z8UOfW=(Hdr%f?U7h>H31X+s&pil)wu?v4P-BB+;NeDMW(P`ZJp0i1bZ%C+eaILB`zma7Fd zq{_C~A8TFJZwcK&-4`OVzN=$Ib8le9R!)j4f=SLzz~~aK5B`eRy}k=bg6dTLI(c^Z z+rQsnJ317my19#e#plTZ6@6KE`txi$VzwRMn{DUG(&Bx)YLX#E0a*OTq=d+ zRvS?vOv)ml8pm8-p&K&@DCY5#C+3hqV=t6JUR0!$W79m845#v#yf?e}#TQTAHjd^9 zXex!_cxrB0J2Ua+^}>3cUle634NrQqzEW}^G5|!J5)A2G`W3N-aD$k_yq4=Ych}cU zN{~$~Layd<388k?qoxjW+wJ1a+}iq`&0Wj>98K%i1$}hk*;fbB;`0Z`dsEX6%3at$ zIDh`tr)OtT(_Cf9j8DK=@%QP|FW5W``<%Wa{&KqCsR2-X zy1r+@v(@=`?~|eT?`{-B2tSxz-q2oEsTnJ{sR_mf5hNiPeVMK~wX?sMZ*NbIghHl>%52 zG@zt;IUY^VAit4JGQ7FTcLwTCpvshdL3ympZbRY{+ zfu(eyF}QvMzCVPEyc>)RCJ1U7zQu`_{7Wv@QV9@bwa!>*S}=c!kY}5Xiq7Nr*Ad_? zFxOxE^90JRY16W#fM4S06OCFJPhY7VDb++mMo&7H}9KnjY(zilJeMUgZt zSP$ok#4$s6zu7HnxP)2dM01DVO%{$sF!MJbsk>>%=o3V z^5iNE-d=YdxuyE;Z<0)2hs-N#k5e?4ui42|4zNuXRa7SouTmN84C$EYg$HO!n@&&f z@9z4*Je;9#Wuyo^NJUdFmNizv$4PbClTWEE_7v;kj3L=YG&3Uo(Ch~IB7`sh@~1zw zh6(-H5|S-^w>F>rQk_OG3Qr%=`Adeb-LYtgNSe;=CkKa?Cz5zp zZKyhUs;dB{dMFiEvPN7X!W&k3t11c^o$kha3t!`h@z*B;%LYxnfIvqyodgr7uFk%E zsm_!R9Ezf5cFi=KTMw+wdHnb>X-Ek&-*&obe!;A~03-52cSCAy6^PQBXKTf@oQ4qz zEuJ4T6=(5UxI$)y-ISO`mtb`m3Do09SdF>sh_J;hpko*~vV3lbxnjjKh~vWyYC(%p z?ryz&@nYra(=UMv41INRVRd(VhrJp|kO(wew%8=hdn_1m+UUP@{qX)B;Wmav#!p}0 zyK`r4MI&a-8hNb8EB(`t|9W?4zee6p<#RnlZpcJ8<|ct{PTevn&#H){0%n|&Xp|b1 zPF=HVr~(}L8k0h_{5cK$&g1)VREPLr#Pf0se?Tt|vtFKEy|Uvn+gPlzp<*~}&X{4? z-hE*+?Y0f7ZMp~z%uv8A5~J}(|LTF!#T4TKkcj6K87e(P-==_~$PfgIfcnzBi#qXu z3JymDV?=LiWivU);Fj)=Oq>)P5`=?juu*+4H zM4;LZQojTV$O|qXz^UwlRRsVOcAs$nsh^1%dKN=Ii619>`Tj zn&=&uj0&Su(b1bY6TgD^wV#%1)h$}k4Mwx9uNs+tjvsAWq@CYv+z zbjT9}NoLP7bTLp&548p&v(nWzLFovO-rxqWsHSn&tK7iW@q?2pR z+rGaw(KiN$jK1C7s_LteAwDQ8hYBVXg@8o7o%vg{Knkzs=S_&V2!leuQ6)17?)8V831`?}fdw z?{pH+TLD95WYxY2?Nt-h93jS{WiuxOSaVikQuKji=6q96g7k7@%M}A)@c#x?p({2vAww zKFlitLWsbKcmm!C6z_|IU>*Y~6dY2H%*G==`^^1spRu(at=m!%M+_V8WSD<+WGaXf z3zq(5XSM~*2HLr}l-6zayBiP7T438rqE+izfNAhbpD?t?gV_3*^v`#*bI&ZkO*~+- z5^j!}gCWAgh|5c*Q1oW6&*rZk{yEDY@}mzQnyDf0q3pr^hcfrV_;YXLjs*&qSTo=~ zeB_jvskN1*`*-hYLwka3*`lUUn=Dz>R`yF>o*i3j@5DJxvbXmie)ZL}m)1a?UF{q= zQwX&&6gh7{#)B9xuP?Wvxn}{llcbKa&fq$z$V^7r7mP8?b=tRCYZ2J6l?C0_X=WSN zRR->uJ0hWM(Y~zSfI4FeI6pac2i7?q&gxM|hp2@aAKXF~%~H-|_Q{+D3TS~1oi?4= zbAd2bMOLEbQ&>z1)mzlSg&_sQyuOTh#A;JJ7gvwEX@(;BKW#wYJE1D-c zE#`>bD*{`ft2UdXlVAuvc8&}a;%_HfRE6p)^;BX&EvO(o--?$+l}^04hA{0hnfFiB z3E;w0>9@EJ9BT5$_gD3aS3lzyNnA3z89`4w z3nZIn&Dxk>Q(Ts1&`fK|I%}CZjk0KHyX^Z-Q`pF}I&0Lcu*1Fm#pRie=@mO>PEXil zosR9m7ywv6r@!WSQ))(8w&pI;u@vY}!UCyy3*%Xb<8e7nBiaYamN6jpx0(rFQajD$ zb<%LDRzmu(W2Px9PJ6oT5}_I(ft94x;WST2OOgur+JBh~Ph$n7z}(NodW%bo)L+aE zxAN(z4X-Dv^M{W$D{D`O^ryFET|sFf^)Hv0Sbb$RNmYTA=ENZUc>taKYdDav^*Tuv z02-{XEAnmOGJjj}cM5wmZG}J=P;R-BbFYMbw=&@;Eql}JZ{>N*Yxn>Oup+E$GgwOc zrAxmR|F(D11|3*sQNjj95=(}q>2(+9pMLyT__ITJ!Zba` z2%9(!a3Lhaf-39EQYl=6V(~kF@JHqzkJ)C)Npsi+irHen;J-YMkb{<)}}QYtc<4BM5oG z0Dh~5rIP1?9ielJ`N{E0!WPX&;FcnK36se+ zcI(K4^UY(|J6UGv(CacBsjPd|EM>xmnW294(Ssj+aNkVJ{PLQ^e`xgRY1H(ME3iscCHD6%iD+EXTdv*Xeq$Rr4T)j9@f&iaci0zExFP<{@Xuzz$y$fVDVLxSP9?olxF zkj|-T!o%{va?Ydu&3q?;JfQ>2DG7tCVZmdPmunAptM>8|rbc<_Nhr%1e^EwfbDBg( zs}>y6_C{k=PN7> z#dk54EgHi!u%T~ouf#8yZP!iwN>z3oQ{4qaWh6dckYfuSJg{V1j0%l+5O+z?70QA- zwmX7~h2%2rYX-!&Uv1sHD)fYo8RR(e(e-0Vu9TSfb;&9q7p4Sl)x~t5$%vxZMS4?Q zFlUeoPcvrPwG=C&qqV>ThdLHEb(>lyIJk#Xx5fK#8qh{Ir&01*7IhjDtv;J58 z^5FE2mSV}K0xCEWGjK@^r1nM`!V};3{3Y%iQNAUhbNH4>zy0TsL$%=7W`VK1y+?n& zN`Y~u8{u23oUVM^4H$6#-pl9DTmnQKY;A2iVUHQRH+kNUU1p03(%u4U!$#SNt+J?_ zUC@@Kw*0q^wbysvKcA zIYi>vQii8QyjcPiBfaA9KYZvUd=ZE~)w6ig%!q{)(uf(LiwY~N@IL_}GwOzCIl*IL z;iCsXJUjg>d?(X{Zj=e*u{*G~iZ5|Mu_yH-GQH zy0<)cw7p5mFzYmXXL%|c7~`UXq$-Dz;+9D4ZS7y?9tv8Z%p=comuZgQX0Fi8)8uAt z<|Lv4d2qDjC|T`c8b@7>+#Fi9bF_bV>4A%cmLII2UQV-E9G&F+iOU5gxFO0JcIQr= z{LLqy`J-EI?eBYnUx_bX=6H#4_h>fZ{%PeIxV7aKek|0Ur%b`ASVUA-&pCg8+4Sd? zVPjzf5&Dd(G9{XAgR|4}x8cT?2K?F(w%M-ou#t`IP}e4vmRcfy&Qd1_VyERWC};;bC+{ShbPZq^*iFKS*k3GHH=ZNTinT=gf5) z@73v54FGJ{NhcAOfz-mv^|H0v50>woTrp)jnTd|_;^_;7Uz3uKdb3E#kze7T0h6UM zijut$G%JWVTq)6pRi?GY3ccYEOj{vh%{^0whY+9dC` zRnyKYxg{;mmz?{rQ`J+3$+NY_@oVx?O1;KE!1IcyQor?q+d!;m*v{9ukjCiHOnY^L zp$8(q5Ktkia!`esD>QeL=-aYQ+si2bzqa5IB+7u0iX)~LD(=*^Ep{|ylzbZ3&07k$ zjouqs1<*vR{spLFDnkps4aV2QK-)px^-}NRK7OI1sH3?MPNNl4Og(PpQ$=@R=hb~S zT_6o{gTv~RA$5rjYYC(53s(IjOUYmb^;{?0fr}~JENF=4Oo3W9W+ll5OL=J` zcG1WFRqP>nvveyq=GrW&O$)@7t{2lwOqbtTUDVtQ3)7JL(*8Sy&tosgI z%awSGE7nigTb_l37w0dxbBGa3C3Ybh21A$>VGoS9@um(pT1CM`VbI0l7IdVU~;K`CD?2ae<`OnYq z-n(z#)zhz@nLH!ItaJ2y>GWOuTu2Vv_op34ak9HdKXkmzPE;30itNEG421u=2`Y=K zns)mL>J;ae9s5Kax*E&Er+e4(76;(weOElcPf-#s)*V!Q!UhRJQJzIJ%1@DS7lE2Q%ah^)Zx}j3 zX%*z478FSN$|={g>t2AR;M67>it=J?D>WkQsH0W#S1?nxOu6j}c$ws_%W7=&*Cy0z zlYpfVI-Dwq8FZz)#wB6Z7yQDlGRcx98D)}0*5@gdVU=<@>-MZto~pz=qEh60F>fY{ z^Q4`xXiExKaW@a5ITX?XSY+oEgKZKGu2#F|Brewn4%El6ryVnwk*Qnr z6m~d=F7(8*$XIweyc2V=p>;} zaXxp9dXC`aSHZsXR8OqP83Hwp-;Nl6$9z5X>%-rS`ENytb)~2-L;Ca<>*_xI=tFYX zLFOi<4RM5Krp#gJS%N)R3(v1?L;!p@Q*~0*9MrY6tB|P&4<1b_=s4i`OC>c1uz2>; z#Qwql{nh379zXcQ-}^}&QFZp!{=uhTeDRmR`sKmtF+E~weZ>NRV!?XEr5k524)#E# zd*&i7Qy!T-&9OeT2TT6*Z*g&JXM1yNOH)31^8UL|-s^#l6;+>n_L-UX{p|w{?8u-A zY(t9|y-3yJuV@uTkT--YMmlK7B`V}3qxKZ@OJF|bYvOQ4Qgj2=$L%kjrm<7MV~^K4CYWv0FzO^Vbxn~_i1}j-s%A}A~VNP#2 z)3GLOD_A65p#cWW+TE#N{qos=|KI%&|Lx!VFW*^RayO`J@N)m8LDV!Y&Vh9EyI<{{ zuUtNU|NZ;#zISAGnbV`^9ef#V7%By9<6hU~Wnt*lZ@zkNv(47dj%_1#Zr!}y8JjOR zKmPQS)+$b!IvgqOL}UjPEU)Yx*)3^Dh*J!mLYBil7;50n25CE($hEbJ?T>*r`>V$%qOKDNGyJSNn%K8?=+#yJ*BBlp2%XuEh!~ zl0a!{mlMNVk_<^;x6^*>Q-)`~Y_><|%B~G>5~h^WSNNMJCAX9yG~RMZJm?iQvtKn# zWKj_S$B0RIx1g^bzhL9n&RG;9lJL}_^GqkKf>Wr1;x}(Ze7Bry+;)jcR}e*~X~0s3 ztmH4F1T|(fJr^Co!H~o3QbIWS51tw`K?taf13HjDfK-EaNGFks(M4CuBB!!%3dumS zVkc(h+FBR208`LXV&Fj;G?ejQ^8wQuok@F%FvxjlALcN46_-(_jSCW52*E_92+|U{ zoJdXNp6NAZENnEwvR;sKZ&*st@%Ek+!2#4B78No@m;6G=X3+d)Jlf3$sWxWU(kPey z1j8{TX_G82JJ-wZEm*NMW0}U08Np+7!PaO)^`-437Nust50#nWq8N@s0(wS-YM3(L zbQ(Y7s(!xt`PGn&;0xubP|kTR&j9?Zk$<~4IIOk^!B7=tQVnraLVp!09oZTvixJ88mdlc710gR-RUoF>UT&}(~qo_zWSkA5~J`T9s*wPaf` z_v<8j)gry%-yZiWglRbAK3JdvlC4reb<|L`Y2yuZFQb#b(`vig^w zJpILAeab|U(Z}-q;`++*^|_7jCg$x#FqDwE<`$-1`fz4Gdem%mTh>e0Gtq&pBsDh* zngae{Nm$}pFV$PohBV>=<@}QN1Cq))w5ZL3cR9Kj4|Kx+lgQM5V2kC zPmbfK*j*g3fjb*t21MFWl`29dLmg8QgRD` z{E9QB#Y1x@K2=3NUXzifdbJ0nqDd4*MEoeJ>`!$*)g*#A?IesesPVlJkRb{l;qsTz zdonM?3UAtrGE*+eeJeT0FS5~dzEoSl0k3eQ{)(QsNg{CMxn3o&(h{ZMwiqhYa~+eX z*|%2>L{UVo)Vm72u^;#tJ;vFZQK91!U)tFmd7k{^cbYA=d#13F9kIc!>bEurs}PzM z;Dv##YN$9@rW66GrU~atz};Y;BGBRaRJEhI=-ouLRhk8biUV%ABXELD>{5a1l)I%s zQaEWlaOf_(jQ}{z+BT56CCzE>3+^SM09~3S0olTubHP~R?7Or5=RBwQIiJJ^?}H-* zLf6zVI9P!R)$r-sGa*5jG6(;p4k5D;6_CS8W1#jHd{WPRQq*8Q^(5Y zc5{oBw70TP>xTeJG~W)t?QgsZQN$#?^XUwQ%O(ga_hz&XACvgKA!DDUokWv@0#Bu}oP7fC>&kD^9NX;O6Pr+C~hr>vci|1+3iPeizs4y2> zQxVpF7`reTWP7~n7E3*>7h`)_{=pAFa*)*a&d&9W!Mp(!`KK$($bj+!aD+R1wDnGolC}vp^3Rg#Y{>B5~4e9pb|d|bJh>I ztjB%n_S}IsEGo=DJ7#@XI?cu%fjIJVuDP0}Y(W>TOKx1E>vcJEI!oZ#fhZxFB~C@t zh}B|222h9@1Ot2OqwPAaCpZo4QBsF!kup@sd>{y#0THWo5oA~e2gAw_3>oQWWkw|r z@6$f~LPEA#F%!jHBPQVpv*ZAdf}@yft9Z!E>ohk%tClC1hykhPV$-DQjVPv2#t=uK zMTe4vst}bT$BdStyBJ7nA7I9!2PPYu&=k?Ul0P8Q52}Ls;i`KSa1}SAp@yi5LqyF9 zh0)^o)SuKLI*S!E<*Mpwo&J>8tvJrR0RLv4;S3l~^1go}m_5#8x1mYUWLsQs_ zVpkL!Xf@^KsxxtqcQZpXb>@DriZ<)G1+&g(kkSO9@Zz6AS2a{Zbl9OC3ynT0Aki|4 zGZ?^S>ko~|LAOy?v<*ddhLw%?>1Nt`l1(thC5P}Ff2gB+r-IT_@}UpK>YnA;^u*vM z-Kf;Ks-bo!PI4DU%FHQQI-Q2rI%(W~4s{qwLOhv+Rt?f=LMy3VYVMf@CPKgf;~}*c zlX4a}z$z&{l1oa+55j%$FG_DdrR)IHHW=`zda4tT|F61gf>(l)V01x5Ir$^W%B0v< zkOS8>fGc$Apk-#LBD(K)$|`aoh#-fXocu4-QX>c!^V!phvz@~kb4D{IT^bN5X!PtV<3-`IY+ zd3Jb=dB5EH^xX#=KYH)O(DsoG&qzE==2GfJre5c z>shm@wPZ{BpcChNC+q*P{ng?1-2TDd>a&+8 zdoSn%z9yfU8HLHz)gTVUCWK8`pn_9pOi&jbT*SI?=RpxhhDee~3AOg`wUCw2H>L=wV8x%gdnmDFMa=x-&U@)Fti;5^(3XGvv?MoQHC zTK|ei#AdCn2BPPYm9L#o;8Hu%CN>WPz9AfpnQ$t#qgxG5lO#6hBoUajnMRQ|Ybm_u zbasSQMkcxP56kGJBXh>g6Gi0Cu;g?XB%jJY<&?3!P?{`LRzJgb3&wthcApT*B=e*l z9hC59NIvE;i8iT%2+c6M3StKR<&p~bD`BZ3z}HIAO`!m2g~QUus_n)klbm_dS&CUh zF%OE8CulqW@cNo;LcjtW$o>QoX%zoLErAC+kOPl$vGtw}lxkv%lK{@Uf`foB9*q>b z!0H^7OLwcD=YU&PisV*Z>cvgzG0@ugX&SIFr^LogQdlzWq$=}w)@o%(6=b-tr_(}8 zocaZ8#AdD>J5vwRh-yp04d;-77zL_N$t`uL)4QU1Wb?N2IxA1PRHiL#;$_ZT%Rp=) z8&ge%#46{+m`JG*ppD_z*URUtpa|y3PvbboK+`JM7bjN^PYVty7W!89-)fz*_JL|Z zU3%zs%!T@(rjBB#t;=rV8A8juzZ+Vu9?>6~DgtP^L`~cwO?$ipqPwUT9uih7^LIi} z@k~BV!UZ-NbhP#ZKJeedo7W-2Sg(HVXXmE9U%g#hg zyL1N`DCDhaWl~7W${Y05aXRO30O@vC|C;@PAG+;WP=^fRKy8;54A;5ZUNoGat-1tL zjzP-i__G`ajbr-isji*d@BZ%ZrJ7jc^upeeBbP6%(?59W!pItH;kOr8_t)>3B6q%+ zmAG4*&p-e8SD*dz*DG#ySzIBc_Kpwlz4Q2kCl6eM+<7|Tv^}0DN2gX@I7X46gkICc zInT-Q4Oa9UXMa#s{+Z^4?g%Ha(sS%ZT<1)%k5`54dLbK^~L;nEmX=#KQB!* z?Ug3$mYTHJw`djcRcXRjB5KU(7G4B$5C=OIZlTHwXpkQ*fr?<9&l+KViD=Zx`Nj7n zc=3`*qv~_ukSeNet%gepg>EqfWxK6Q)pUYcw^~1OCkiac-$_<94663>S{?RBDEsrz z>7zaN)$b!jQ{k?H`~&f;ZhL#@Hy?j|_kqJS_pN2YQq?v(6o%tW<+&W9B^RLtC6437 zp|DO$hGU^cV}7Y#&^ir~B=R7bN(_ubDv~%9M_?OUmEOY>SfV0WS3yy62(1M4DXh-m3`BO+?I5dxYmx`kY>r z?5cZWg4Hf4-qp5X=IkLF`9#F0>K-EJ`E@Sbc5HT;iUt_Z zF)W(WK+ieQ_;uGw62G)1K&B?+84oJtHNcKQO#Fm%QdOhBp6RW3z~Cj7XM}C_i8{%S zjsUG-(+rBPXteN{@unjAi#rAKNznjlgjBJz?Aj!b7iH?bp6QFzbxA#|f<4P;F@UBa z$1xzK!N4E~eugqfEC*pBBs6Q8Fx5uMa;>rc(8}V1RC7g72)caD#xy8*6iQNNCeC(h zU_?8~ovGD@0464CGsZA*kWV1yir8Q!U`*WXlyf|-*|50%*gdFG!Hoqn^uNqqY{3mU zlQ^9zE79DAV7mJH;N0P@DQLlY)NX{8fQANvXehl$Rx$R)d=~P`z{87`F3I0P8sK=7 zKqg>)KMyD;;=EfB%0jE9y~|5rJ7^fhf6*Ak3ZE3#{@WpwPp^3->=2O^l=4Hluha-z zF02do>86wp^pryY80qY_BD{8-NkMN$n1m>y{gQ-P^hhH1c+@!To|r`bx4?rUV)IBF zaexPRxF3QK6KDu=SF!BE@LC*h%Fy3lCsZdSBXXAV!g)psa>G2QroQ}Yn`PR8&V=d4 z{W}{ovyU}IOxRIA5HLl+Imu2ha-QY$ofkWM$Ij2%e{ryCHo}SdxQ6J`;zF(D9# z%;fv%9N0~X5R%0nt1I}5BP_5oms^pcAj~97W?Rl5zx%Fh9PDN%5}ecM+rRpM{^Dr= zkbUyr((2yvQ42d6H+f7*sx^Y!G@~bmR4OQ_62t2V((tR{GnOu@2N0&hQt6*`tzgQc z6oq2a#q3lTxM6D55);&m(JRJPgK<(EWt<(KQ55WzpfOZd;jNg$&h}1B7qd2dl9Y&7x25G}CpEN& zV{j9eGH^Gzal*1;SN67D*Ph5=4bvQOHlVtq4-8%DKEn^mZFF~=QK|+o&{(7kS{y*N zCM)8Ez6HJJMgA84-KCSJtvjIOz51;935v(m2mDv9g~;yaD>|iq2U10j zjaWFWv_;3^fGU;>>bjDX!7|iRos}Np6Tferzuskx%a80QNb|}yJ_~>xGR9MGn664D zRMv0^wM={&pmTa`$-)6AlH}VhCm}4c4zx+5(nZS)OmEZr#dzl|{RxN$64@ zY1o|KW?PYQe-lG=yXwVRL4`&gu-zO}bqIqh4z1?5p*THu?q|44;3%GJN@Xx_#|Y=5 zT}2c^Qd0I$xp&4ODSf}H+Snfs%pI#X!Jg5_tfNe5GDB`aKjW04By*Ixt4*NaDjb){8dCfAR6c_R-R~SE6o9}aSiI+2b)W}aWOw1nmb3A$frY=_>%yD0IE z2!}da1@ipmiy!^yM~7h|J3I_`((Wtr$H{dZflikfzYCMY;A8-9U@_*yw1i1 zg*BDPhbc%1u4-l0-cF9a)X-9e58^{wpxP)RWi}^+RudY1ANUMQL^(MJFt4>mN1C`u zR?@N*Lw=x&)6Z0c{|#+vacLUD|K&gb#oE2awTBN}A&F4*u5-L*(Jzb1DLlbW^yzdw z$Bj%|R*MIzzbXZ`S*L2QRxhYHRj$aXG8X~tEpwd+MxI_KF385isVQ8W%|rhdo28RC z)2c6#vZFJsN!3Eu^&DRlNEuM&fE)pkRD}V3sSYF59vC8$k`E zVl?40qkh0N>}#fS&;r=Rui-0i0F{3XfQ_Y&S$wL1X*7hYjJDe*AU@amAd=)3Figu@ zCz0h7oJVRf+B|~Ls&}^|!A0UGRjPZ_+@W%&>|h|3D*I4Sk<==X;{*nm*IEwZeL@>} zbofr_D>WUWW=0_TfkLeu5LmU=iwA8F>89P_tMo8lIB6$P1%qe+poP{EnjmBp*%j@r z5MF|-+Jan3{BW2-FY(HBY3|>sM;lGLXY#0;szgHz!!DMgj-$0|8hRv%(it7?p^p%j zRtkhtAUDWQiz~>QVFj{d)zxgNJ0_LK3J=p-H3zI#ce*T5vm(TX?tu=%&@p^h< ztU}#5G`*C2-&~O~cRrP68+BL^(3vGMF-En^D_3p#AnU_}qqX(*#(6)hLh175&}IID zIhc<2pPpOmsUnc_r$Y^GH)+J%`Nfasl~x5t3rYxAYJJGLlB1J+D3=yjci)Qs`sqtx zsPM!JdDh~OB0s3~7k+C~UJ-EOlqnKemNXDY96I)w{U@E_|K*3JFdo_$zH zL|&X3E6HJdd;8?@V0V*9z4$B_WMQL#&e+H8u^InMg5eNmSS(;N5iX1O~+iWACQ zKg!hO?A+c?)@{h2ieuwzxN8YB!+3!;nqi`wbD;AVPruBk&}f!M5#+d!26Y&dm@X@k zodL?x@sS8ZMrYI=mXM2LMwdIOg?a6=(dpm`y9;6BkYbS6z%o5_c#_Q#>Vv#OKxvO8 z7X`i!k8*uGRUjGS_aluCJa^38SGrgmWE`4_DcC&YMn?(h88nh7Pu}(HIVvMU*v}Yq zq`xZETS~`&WyRBlc3|KxR0^MX_}_HI1PlTB!AHwkGnf7rlxZP*Iv55Rdhyb9WwJ_> zRH0#(p*MXqY)~6a5DimZO2rfd9;*$KtpO_0C=kf3clWC9x;1U zqvjO1^WhI{vPova&x8xeIlLrXHaRE*9Iz*Lib59VFnrdBs*WPFTNS+Zy_WlRp0bUd zpdgQ~ffx*X9h`3049iL=XMkCHPSFfXa^WGEBvOMekfRO)1Ll_Qt@E^4H4rvIUx$H6 z)rD3DA|^Sar^~36z=k{ z{lZ;xt*$j~vAyQfF++wFIdM&Rpe_9^LqL{=9M~$`&}rJIuc47dQ+YsCYT?J9<-;>q zZh~F7URc>Md|6mocWTgTrtL1To;`i0)v!xX3$u?ePp?jMLec!f-3#~GP1($1v38hD zQ_BRZ*F2%-U{8}bnWzwzj+Bd|UPsOrCyRqHBnZ<7#lIBo_JmM>02GoT@ z%AwG=W*_xilrUa2HoB^`1;E8gN?}3PDayTG zX+$ya?1K?2dWuPt_4&Dt^Nr`5uH=ks;z|F{kQj1;V&SnO=+s?UI=R~2u7PV?yDF`4OD%p=tuLNI4q*)kpfe%7(f7G7%4!PkK^tj&k*0!$zFlQ_wwgxG* zImKF@X{l!Vc-;XJSVO5}702RqUnH!n3y^B^yzSvHruKST;S(2|)4=F52()#R>e(o! zOLWm0X%qz*`A%ae~!JTUDA?+FDeI+!P5f`B?dP zl1>%LR*O^&b4Y~B;M*VR1S5(XJWUGW83UDrVXdQc8$x!)hY#bA(wl|^pobFiLt-Gs z7#-cHW}w(}RFx4v@-j_h!d>R*fu9;wa#vtlsm&J_*Y9=!T z-63blEieA~Z#|*cn3Hv<+tV-IFSt#ou%_+G)!#F=2s))JN9qT$#(K4oXoTr4ztC~> zr=nvQ>!`s&C^&Ia+p2Fq1+iV{S8A@;VNKaTk@YB1`X@!IarVcgEj%g8sIi-S@Jr^%H+}~$cTU}mdBv@aK zL88fiWpPC(K}q^DdFiaTtIHFYN3ASe+*w)JeYv$dyZXW7cON}`>>vti?tvAbQ&&e8 zS0112Jbk{uwSBrDYaBzx_URGD+*Ov-PWMOV#Zhl_hJ)jS#j8b3(U2iC`ojXM|qsP>R(}_z2-Go$dW$KCq>M z!H=Gc^PU`@mbDU_LK(>nmM1P9nBloj2aI4VH8pu8gThZZc=$LDhE`(wDo|9D_)x(~ zR&GL{dW{qA=YQR3%*+9>buavCSkb za4@Tw8VE{?m!zGQq6qcH8Q?WFt)hdO+;9{a(H&vJ(UIkyo>B^ePZKxd*{|KyPOYQy zB->(XGAVf+i3GQ0$bp4q4B2~hU9{fsw>wCN%=mURa_00$aJtT56f$-Pj z{F{6QKo^&WuO1OAX}Nz*u%$$8RlN!V%9eWr17I|aC;AE3yoDS6r9jORT?D@MNy*oE``RLxp zhmRlr_=oSWEzbSw=RaFrT3uXQ2k*z9e*Vi}|N66MU#@Jd=LqeEbcz?#|O@~ zaI(eR()kLgR-9tM1h6o#h@GwN`MY;5%2=zHV(Lvow z&t)i<9u7Yt!79246gJf&Lu`{~xP%dr;Ti&k%A_M7BLd=Ooz`b@ z{FFGlMxAH+ln;{y2O~-a3YON-m|x^>sLFvw4#?=$A>%h0PeigXX;t@jTBy@)65Y4b zIb_8uXbTBx1tIk%@Pz6s?^hxK06+jqL_t*iDX_(DNXkmOZ13aX}h7w zJzByLQf-guSocsbsaKj%aMJl(8UhkUH$0#VyKuq^wBM@r#E(`3Mkx?VL~KNDW(R|k z!KrqdPnELxvKl?(H1HO;5;IjyNEE6-6}9ixlk}5H7*W?JWI$NMK#v5uw?Uf}I?DgQ+bbWX+d$xbEH$Sy}F?)4*c`~&$ zbL_JBvtxG`!-P>FaRQ4$vA)oMRq+w&SSh}s1{sl{4ji$TJVB?D2Ui>%GYTCA3DDrb z?`2#~wrm)wWzd6I(~hF1S&O^sb6O+KSd^NQ#FcJvHB?BJ6UxzAz^;fe+D@LhWr_*S zgfUi|)&OjblV6mWtVHFi!+L$wp$j?6B3&kwIJk}}X?ujenf5z|=$j$au!y9_YoSm|L9e(mx_g0r5|9ijp(ck>x^zP>K-L2)b zqvf@gr_Z;3{pItY{`9AR{?GpnKC5R zLL*ruAc$a1Lm6C9sZzNco}#$RJ5~OMAyRc0GO#9gUc48D=!2d(~p8RLF90O5#&u&!EuQg1kDF$J{L& z1LnzyizkEGeXB~BTQbxW;+V6;(@KihZ;<6~!s~^_B{o5WHIUwach#94i_1=#LnJv! zQOh_Od3pWbiPLSbkIqirOnAKHS=rrCNtbBIXl;~5Ku@cRHfg_dcdkQNzxb&(FR$GT%4>9fzHeao>tY5 zmTvMbc90CblNIG99n?A=N9XAQ3oDMdOv7KWG}=zRsD)1tP7Ze2Cw~8je`ERl?DJp$ z_4)qxr@#EgnoZDiv+q8B_vgR)>>vK)Kl>NI{Pp(1*^>wBfAEKY_~h}E2TwkBAxIHh zKr#S0pPPO3{=@y#!|j7Tvmub_$Z+F)TFB?0fBxB*U#zUHp{=Mw%zNNIJ!46As}xBe z**!CD@ISw_{ORXk;$SYFU?CQgb(*mnM3me{x>U`*ZwC%|yB(xUOkVXr<;n|8G7T0- zb~eTdwSz{4d&K_TyW2ZkSxV}x z=5+XokD^*jAQ2OGfXbM>V+$o>Er(OKwrR5gNzkvN-fl2{+CWjafigq0dc=twYAh`Q z`|oNr(b}0DUCjWh?H}iuokPR2+!e-Pw}r}(1e7Y#dUyxPS>yUw2ot-tJ*Dd!qIBsU zcLX~^x5KN4H5X14{f@Yjp|5dOx(7(IE69l>$s)@_6IrKAeCJBWR_;F>uNott_dC zd@Tyd$a_#9C6TWuCx;2fivI*qb*Q{6|KdRtR@C7Q7=M&YZdAT`wI=joO#H!;k#un@ zPza)`$S+CCRp8JH(K`yB{uEpdu|lbnmQr+5W%i1}W{4t?6PO|CKvt=jYN|`D6d69p zb+J@VowQK~T8ThJ zJX4tw7aig`390(N{s6eY+o6pyA!))i;)ICCSkd~T7zUG7?)c$rf8{eNrShzXE1Il= zy5A%@4jFEiNC7~IYKIO-7`x9V>i=h#Hibd$i$Fv5A<-gg?wBt|b(Yp1ilUclba4{r~09fBF}n@1I$ke*MjOS??Ut_K(L z{Q1i}_t&WJD~`{cUA;cLT3KAO4T97*U2^ySee7=Y=`%7tRy->^MyHWrY%$l9b|=fo z01oiRG0M%a2ETc!M$8?XSzl>#WqFy1;wRZiiE4&4c6;!GScVZoi81(Pkoe$(4}5j( z#4v0b^ESjZN4dO|r5}V}TBr(3`}F#Z3Q6Yv7ZHhba-7|&MiKUdsI6*iEjwtn=$LVa zvtb5rxCT;i=k~_;@H$lx{%XCv4Md-AJMmZgNSKf~C?I))O__x1Ct~JyS*eUet7?N* zjl{A`O16c)Z1oYD%#YM6Uh88ifRTvN!2Vz+Yl*=!t z9*FaI%uWc7?(LK2NQA;zgC}!2=;496iWVVpBCrwa@K0_6VRP{KVbB}4ZRC@DdKSS4 zb9h2n6AJQ5Si@`W*vWn68qSy^s@$O1w&5Iei;6F#XHC=YG9d=QPlXjT-N0l~#^1@H zvx=@44j2ay^5GHE&w{l-CIS>Yzm%t9hSZahM;lbeJOy^?#`+h2ESU z7ga2>t02*HVaihm!h04B5f*PO$Ww(7sxB^0+uL#|OZwbUeezYd;=qSL#l=nmW@MZJ zT>7ca8wwPUP$V+N5g)!}A96Epw3?^R=|i--*kA~$dIhNwm(B5$*1zIF(TXaHj(nre zwp5s4Lxl3nVE|YJwf3sY(Jiz^1TQ-@eqA8No-%uScG6t~0A)J#36^GY+i0A$+PP_q z?b9P;RhhnYZiuD#vlkF@adl`kVN&MelCfrLZE9hC9UouXJ3etU_3^poS}Z3{D{{lK zTcNTO3Uylh8NY>~Fo(polbWWh%P{sWoUs)SfDa@YVu_J2?NI_g_$k+z@r-U?-8{iK z%v(6+5VzCzi?}>6(4I-)?N`|jDgRyip_L7^5YAG3pc!xKd#gffYCus6W0MNxWu&gX zT?l{+IZz&->8cM0x{vbJ63AR7v3@sWV=ICkEw^BT_59%ISaQ=JtXSqdP7n5-uX%KS zFn4iuFnh6bw!L`x{6`Z#@26QEAgn=|g0=N2PXg9qtsS1o>YBJ9yyrFFm0`l5qARYh2NnW@gnj_`0WZKRH=N8?(GK)JOpB>U5=3>d6 zJ3q*hPsW(6SOAEN9qLubq;NoL^@H$%LJ6Bk{+fmxA*iA~{RA-Ah-zGQcwsDLMAOjV zrHk_*2ib)hG`x0hLKV3)smzL$G$VpS@V5*5PJZ;O4~MEpx{goIx4}!$Z{=<)2e&i0 z#UpNl4S&ic1fcY^oC_36Z*tS>I&zGK+B3=od4Pm6o1G3`oGbCI(UhYz9*8nRf~0jB z_4U-jGQE->;1r6Pnbnm=mvy^V+OZQkCF1nhmhLB(WInn-dwy`d^Yp>W?E1pu>EZrQ ze*8NNi>tr*>(BoFKl}&(?5BTy5FE*ZZt7&`EZ`ts??1SY;TV)Yc#vDDQXkxVX4(~E zz;YL+t1iGzJbRuT9XCPf$mf@A1ewdA)xedo6#(=V!b(chN(x?`#W}(M8e#|-%^OZFK zm76%A)S3h*fk*jLI0VJxK&o*J_i7KqeblEwjxnpO1;jA?Y?osw&B9gomq7!-;j zzhs7^Wa!O>(ZWg5as!`siRPB9Is{qEP)Lt2)m})I9c_m5sUz?-s9wR=Njy;=JjCta30xNIY`BoIKM$iM-v`CrGG69mJ$U;@|Wrp3bOI}Rwk9x&0_+jpyHLv z$NiJHN;$SDgzZDEkm8YVN(8W%=m$5h>eb9Eft4gj*cw7M{RoMGEV+5RUJ{}L*(KFT z4>$RaKABXRc{B}lwwhFkcJJiLq3kgoQZg&Ld{ESMUK!@ALaPR?4rzt4DBERCSYUl2 zm{uveOQ&eA_LX3Z0VUOrcuys22B#!%6i{iKxFJO%pS#wgWtCth6-T);4|DY)9Yf?E3D#q`qk$D_J90?Km8X!dwCGu5g-dItLy6dHa_meY_FZ0Yl%hJsU^xKfeuclhv9 zbLs=T)f4c3jfvCYjpCLK=%zV4XQ_b6-`a<0VCEk(FSNsOu&*z*K@Y#5&0;p?MiD^7 z)ZU~DDay`kMIV?;`#l>Qo*~%LND!6C^_l8cnd@CDSXxU&N~bOHJ@{|uCJ_=65@jak zM;-CR>*Pw^h8ACAkseoB-byb2#)iI>Xo@Rz^3>6;`6vXPMVOY-GBgMHJ0BTzLiG{H zbCN%gXaada)*k*QUE{rk2VKcHlvi&}hR=gYxiMFIPk3sZi$p(%dr2UBLQgut1P3 zEYI9ozUO{th|Qq}S-WG=?I$yNFkYc76 zxaT=iqwN+o>?wcs_(+0oeUy<3)+bepe~=J=T>;uSOCj>PK{StrWD=@-?#MgbyD*VvN@-?B)pDw1T>Hi)5t-oSfR+ad@!5cYZuS zZ4=fR-qM*kwKTUP z1T(F%RR?&bzA2{4@+^%3!omZSr%duza<_Z+08Wl-AY?#Cc#9dR{MDexE5<2e>IKMA z!bMor{|39BQY2InLq(NR)R?bLX40fJGjb5vPJAAL$iS0d*_mxd0L8KeHt(K6fEC#% z9!^8>bA`z01mX2XHaG>s@~M>o9^sO75$U$&Dx07M@0f(}B&0Z_?D|!RX7#+(=DH8v zsfanL8lSQ*7rvEO>B5pWKNqSQ$SJKKL zTt@_HLl#lDvi2APS)o&UEHreYr1edqGS`C`*zEcfR6Jo#QUlS z+r39?B2&VgYqYh!>sTMUg~qv>J9qB5#wvEI&X(ibPLQKKR8nftH3`R;#^?C5NC&gEC1qE!dKYIp#K<+HMFsURz3wW^ISVt>xdgddB@)cCuL}z-u#Fsz zC4t`UtFygg_c8L;og`}GKkBfqItVPrp;OhW%m!X64io}GK6#yZZij~+3jg9S&Mvv* zgtlO~m9~MYn$I@t9|Toa(pF_sC)32;fMMc{X83vy^l@_KOKvtqWUno?2^w00F!jL} z5I>>lrIa_EUvp)KRl?NV>ET9=1x^c)WZ=h*H zDbbrQ*T+3UVsfjsjR~v#s}gJ`gmKU*`Jl4rEonz_+;mn2RQ{bj5h6gMT1mje@u*$G zV^JPjM1-zRt1|p>R{SgN0rZfP((76>aH8JMEzc-4**m2iZ;4+-AL>D)4z7=lBdC+G z=hp;+znD&-67Ie@p~8AK2R#8DM1C9OTRh)Fhd9Z2P-eFYj9Ie4mYl3Zmu*t7~x?Up!N zGvrEeI&3}w7^vWx$PYE2IY`QBHrc9F)r9G89h!Qo003Y8XeRe9W`+aCx`9YhJw5Fi z<4Ay%yI-wi+a|IXkiYQlgaMisL$4rrQ&%Vn`Xo%+%p3r$j;07=Loh)S&*0Ly!6B-x zkbFw@i#`h>>9Z<^_`npksqn=nsxUxQesT;2Q1G(yw@@Toz^0!@J4uJja)qSLRA46E zD_VF{nlC?fI0ubQjhPE=W)4ZJ9@t`5oy|ctPEia`V8w4MM5s)fWqKOh46(tEDyF^uU)KJtXR{gr`?)D(vTDUbjG>59;;pwBDa3LrTIB|sVoqCk+MX1eyStjvha*!R%yZ+4z1 z-ps7(E;Z%x#(DhsaW^-&&CQqNC#Ub(%ja~>t>Thp(BP*po_})77&qOETjlmp^Rr-4 zbKVq_*^}cM!2UAGu00udXJBsJHAGrpL*L{xK*R2?mH1xJ*L(=8Qy=dCNK7;TNb0Ij z%S)~5-s#-fx3}(k%l8eJuBnAwH>{Fu-^9VCaBnH(>Mh5%4&Q>jTL2ixt5=>qd->ac z_=juXJR~&cw@6Ok@}RyyZj&g>;L7wk3M=JeEX1<()Il6m%q`6 z{>#7l7r*#-zt9Vt$+&ihcX5s5!zZZq)krw_frmI3n^#R*ZI~T| zGxZ}I+Rmef;-*e^IXqlhRh%BJZ8E^N6!VnGdE;hZD>Auly@?){&A|rET=*Kz)##6| zG>hjkiml-)AopqNh|w{`tn0CC=t8Rb+{uS2xe*Z_9l1dT_t6^SLzLOw&=Qky7)^nE0bRMG+5#8O5(z?Ci$r&mg+|2ojS z2yo+aF62s4Si^6`AAOaw!mQEavI!!1?JA(vQbfAiOBpk~Z0bt*B{h}b(*?V;JMmcC zosBsIsg)C1aE|0)H7>)=tvaKBj>wse{D;U$=!V>(K{&R!BEs}H2b~F&>SsF13`GBS ze-G^;@$iFL9dOE&AEGrmW?u5dzQ}xplWf!$xQ$p&ywmm?|AgThT@n_uDjt8&t>ERC zn$y~1tsjbwL@Ah156lm3)TFIQb1+dn=^L^yCiOV+IZwh<=U&L?m+J@@X5dUQ_slUO z(-(=)-oI_vNEUHfsTCb*L-{`b>?1y^-D%%FdHB)YjuSw56DME({3rLH-hcM&{^Li_ zbVZIw~^e-L_}T#QRVW|a9ry?+GaKkE_j*noAjG7#^u zhLF3pHlNjI#mqDw{=~ePa~8SxSA5=+2-y{2+u-Lv`6*QOlCDplc&#H-&5HIqvG35l zd*l|c$>CS}#CI>Rzkc#JfAQHTpWOcaSHFJt{F}S?Z~agI?*IK?|2O~FH}CGeyLIj9 zBkK;gUc7t%f~(kIvaQuQQlq~JLQs+T&B9zKV_17byGP<5Wdtdn26)C8OO zC_xViZ5Ku(qy+wVI8lc~n`APNfGFdbtxYgk@O80uF)B?lgjL&Dji#Ix_rk9k4J#BZ ziIpe2QS|+n-`~7(=lUy-FaOy5-HfiPKSgKd`rF&RhPaUW<~ME-)eLP`FPL8OfF84V zE|?JO4J|WWy5^AYbNWVfCm;|W%ouW1MfPmuRmw_j#5k=_{{X_pTiFQA%U3V4T%3QA=(_dG)O2v}i9hNUDDHkLMaV9R`!B2>jY)9iN(&n4DQj0fpEsDg7^$ zK7M*m@i|4J;?mhrtZf_pKNUDM{(^`EBsUC4G!Sw|PLh`oFgqFRv4uvrGyeczG6#b9 zf~{F0vz}-%r9Zc>^r4nB7Mb;$6JpwOPA_o`e<|yQ&$DwPAWC74>du)pR{JO8AGr|7 zBuBGOYigSbeV43>7b*@-`9QLQPxVIZwYpuvOKMl*sQ9Acx(>twlpk)}Ojl4(Y)S=7 z8E;G;-P%?sF(M3M#Lw6Re2!Ngc3imMoaa3G`&`#SEM1te%2juYR5cK_o9T8-B-*eb z#6UEtuBJZRIH8F!4#nIrD99%iBbic&2lL=Hu;xild7xBBtw)-_2K8WujJ$2><-v-8 z60@)mHKx7W78tHjNi&V$Y-|V)*5w2ViKeRQRNzxe+~b;@DMg_$E}UgxF* zR?_K_2l+vmyEc$iF?EBL`kkuRhmGc2I3p_C9CcaJrbM5A{<&@g+|-T-Y5L%)B8>t{OY$~>4eNP-FH~?EuTaye%rUFUS0q8!86B+di#L$@5Cj%8fU_8 zkKr2u347mI?iFA0SU+cAa3QIzc?BWaJ;j$oC5_r1PZPCVVb_C%f8uAvZ(Z;hhu0NM ziGElhm0x9UUwn-5I$i&)u*n7jT-o1YM`n%`fK7RCn z`?vr1|N6iAuZZwZ|Kba~Ykv9LuRi_R-(J0U@4H|B=IN_fpZM07A&-Mes@=R*l2+|; zZ98)W*~!4VW4+Qm9Sq08ML;=CR=s=jnAovaKH>5D(p$4#c3wizBL%&aa@QBZ>|2<3 zNhq&&2;2>@EPQ$;t$PQkk{0- zu{bfp2i+|%of#vAG?_gizV{qPYhaYu?-NQ?jM*|y5;AN_WOXuc{uc#-P5;}!{ac2H zI_+yF_MJZCF||I~G>LZp^oyVT>Q}#_hbXTCOSuAtK2pw;4Q_YR z!q@B0*_H?ka3O;hz^Tzwbxa&$s-_sYa_HF9->m?>Mjhi6!e-$ov?Blm`C=TYKcFg) z3@P>a!QxQQg`9B0sv9`;!@kJIRwLd8I%SW>MQChK7Y%lO){kUYS6p9@)%MT_$Q$MxiRs z0fiE#k**cmX;)s3^@Ue2UTKKT6*DjCSh&vYGSO0vENDfW!D`;Z1`GU`A_Rp0t!y2z zEtXZvs(@q2$kxe&1tP9YF=OaxXLgKop_RotiIBSg@jc^dI*q(P`Pt_VW;C(!@h9fn zulYuU1EBRb-ZS~Dzy3>G)O-`=%P;@p;nxrB6#I1bWqt<#3PFuSOtJD+A(g{1 z(-nt=A=Zf~YbBt1O8DperYMEu$1f;{IG&7&D*k8I^5Q8E01RsxzRsdRk=i#f~5C zww2PxOnVO+IPp(%yEeei`J>4#cO_ZNq-Kwjl4$7di z8a)9PuX~!=wUAwnA{&+$8shdsj}qNNV1h11>16^SWUmfw^lsF_*zv7A@&W>3IRtT6 z(zTIrnc!BC`J88gs7<=Wkl(I_-5DQqU>&8Vth$0_f<#-_ndou4Sto}AaFnhVHxm7< z$xzB|#2NubDS2SVc|+rg1h_K77(QsJue(vpAWY98lIiS4g3Aqjr-v)s(8yC^c{GW- zan(jT$q7_qz>n}yWZ2rUpfHH!%LuhaR<8_LSZQk6+(E|3o<#e4zz3B&a>D6mZrrif z7J+6WFMxHs8J#vPsgz9Y9BVbjc4Q!2)rB0x;oU0K{+^yj?r0`NQGvzPXEq08d0U%f znT#NZ?Ug;D8J%)34jDE;OoE#eva$;lh7S|ECg8O+H6y21c=^WAl%jItHkCH-Wn?wN zKK@gw?`>#cvP?=d9i$uN9ieG;(`)bE+G}Cxgw9@?yL0;-B*1g6j1v zAGcoa>yhtozj*rW^DpiruhTqlUVm>|-WdZgUOn=H$gO*~E?>8n|Ni5j-h2Gw;nQbN zZr{7fDWL^ENAlwBtGm9QP5nc|rFV(7Zm*hGeEy9yV8hSTrqc0@vp+Pg9KFiAay zqsZy@{3{)ty;aG`4>CqxVbhCc+>YDx?>yZq4keJXrsGs_pLUgwYa;kUR*_4uzu8>h z&xf)_h^vFgL`b0HRWoz(^5tFic+t@h&)zs*=^uj_u;_|^QS5RpqW}6!wW~eGR^4jb=mN1%9R7W^gn#rnXinC|Ip^1U zb#^nL1_G*OZ*>pWhInH{_Q~TXV`if}`2C!E4opE|T<`~=^ew(u)s6QNXJNVnM2R!V zgHbH-NCZCoITVgFyT z#}+L>c#EiC{{9Vc(m09m+7NZ67&`+lRF+R^LZ!~T)~Py;D_w7)nxkD30H<96swp3& zX!EnCmHK`-s)*^?b3~kesHy?ac^${7t}sdae&M;(6h%a{)-8^GsP_lCqt#6Fpmy0p zGcm3s-xhtZY%nkCW@QS~HfAAGv)Y5$<;&iz-`C85g7%DtGwvqJ+-aSE0IvF|ajODu zt3Fo*9gc^Bn@%wmjAcSA6!2AX7e%*rJOn2LJR2@>DWiqhBRNrZU}>i?qNJQS9M*asY+QzrfHrVAkJGV^Q1HP3?cn`mv624Ns*`Qwc;il#1q71%nMT;<6)x43BkB=@BYU<8@7Y# zDKsd%KpkG+X!p8ru?Jv+UJYJ0SeTUe${}K~5MBYeVvk{rd*N%VCLmtEdV24p+xPC@ z*WbbW_WfI5fBicxzUA;|yWFl=uQzSeaK$SoRzGs`yt~Rz<5kQ%Blxm3{(;;tswZ^* zIlpMK5>bTcW(3k?iHB|up(57zMEajo*UA_;ICVhFK`x}R)0_MlE~}7y3{&8UvkS$HZ=u(Xoj%4_GV zsj9!J6BS5s{;MVOj+vA?>!rA`_$)iJWvR$J>sq4>t%>X=iA8v{qNwy64u~~1X3E5i zLN~6zc=*bBS#;b6-sZ%d&G`JeuZZbV8DgIry?&+jUyVwk!YD4G*byIX27gmF(RD)) zhoNKh<0v>in*CT)B$xu85Z?>tZ7^zu|B3P9DP*I@V~hegLs^eC zgCV!_z{GWhNsXQgA`;KY{FxCJh8SIcbG-!yU%89u_2p{-XbJPhYJpb!o6b$HwM9l* z8PzB@&Ozqvgur5`RQ>;Sr5K~4#Y!3fFk3c3qR-7SpXk8r%#8Lm$v7)$+AFq(7#<7yWt@gxs9uq}or7T7;|& zd%CuM-H7o5GtD-{Xd^&sz`_r*xZu8jT`{dQYB!DI(P60}qGlLZ{n+sU4jOQt%86ybJMYJBd*x96j)H_ zx{eIP-;FCoLpC0VgzvXn!U8$2lV@Jc+(KPz*J-RK8|mU-il98T0~UWncY>Ca&6IJH zWUEIVw??}Rmt{Y(_b4KdMymz+;_|Cd(kN{NjrlqcTO|&8a0$rmZiicA1T&=dZj(u} z(wIHp!XSG18rWf#$;e|6!8Y%AF*-LkSx&)*_&C;{2j-#iwJo42#mrTBQR0nm)CTez zki?Sz(V7~jAzBW%_DHr=p>RWm{!R7@$rB>2b`pRV7AKJeW>UCE9?)aq$+O25NdB++ zXt11`j^G-5Hez&Y#X}Xw2~VFqbuO|Z7st~u?}c0Kz4HF)i>HRc1cRUd@h6`uWhi2u z-9|$NRdDmxwOe2mCdyXsgG%Ucd;ayqDE zhrB=Xp4Za4meVhQZL5V{i!;#aX)l=M!^~3e+!|5$K>+mdq<_&XJ2Om}mLHdh-#9E5 z)ny8dmxtiZ z-*w;kG|L2_Nuy6c{Q}KnvyV-vT%j1%`s)k;k9?K$;3_Dh-jIqg0Ag&->w!hhhWFG()2X?H3_P*+d6R0WEUa$ z7ErD?4RPH(3e%B9UAgk@)5kyULm_wUuK4=v2NI3^SOZ72A!Bw1Y7@|hsK76^ofPes zW6705oq~s=kUu3*#&D;yU9&*iP(cD*ua8QE25|+cq;snj7iiqo%MK>L2g>6okEphs zwx4=L`1nEI3=zj1Lv5tba8%7$@f5?9={x5=5mo8DLKcl`wf6J%*SarrNY2J`j3(!S ziMO>xwv~pp&LmmNwkqL%`?goJI&Q0dx#ve0ah9(A7fB%7W)?XI88#6#v|Y?=aN{cU zu2YYT%kZHoqVuMF+Eja2&BOrAbZMvV6R0|`pov&{4))+bBda1P~PT#}qi@B8%Y zFi)1%->V^bwSHhAaId`fvF%cu*Wx+a9^rzkQbcDVEPQc^gl>bluoEqt!7V;PzAoFc zPj3u#_J-tjeblvt-PUb<>pE8yip_aN2U{fFPCdEt<(v)=*TlP0h4FLuwM>b^rl_0wsG)jP)2@3~#DLhgmX*P-Ed31w4NGX+(V z?k6$IPu*ljb?PBzp6Gkbw2h`5@Kv2-t}pw5EBjk#4~X{msf72h+NPlmdFm0NN}EH? zk%+W3(kEc7U(Eiv9yhl!UOaWH69CO$rc>v(2v`E(8gf4BNVDNup-3~XN#jf_lU;7aTLEid&uj z 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%0Db!MV_AaNcZ&P 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�aEN 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%0Ax3*%i%P+G&-Ba%G!`)$6P9V=H^Gj5|% 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

+ +
+ +
+
+
+

+ Where your home meets
+ innovation. +

+

+ Smartify connects all your devices into one seamless experience. + Simple. Intuitive. Smart. +

+ Get Started +
+
+
+
+
+ Smart Home Living Room +
+
+ Smart Home Kitchen +
+
+ Smart Home Security +
+
+
+ + + +
+ +
+ + +
+
+
+
+
+ +
+
+
+
+

What is Smartify?

+

+ Smartify is a comprehensive smart home solution designed to + simplify your life. Our platform seamlessly integrates with your + existing devices, providing a unified control system that's both + powerful and intuitive. +

+

+ With advanced AI capabilities, Smartify learns your preferences + and routines to create a truly personalized home environment. + Whether you're managing lighting, security, temperature, or + entertainment, our system adapts to your lifestyle. +

+

+ Founded in 2025, our mission is to make smart home technology + accessible to everyone. We believe that home automation should + enhance your daily life without adding complexity. +

+
+
+ Smartify in action +
+
+
+
+ +
+
+

Why Choose Smartify?

+
+
+
+ + + +
+

Advanced Security

+

+ Monitor and control your home security system from anywhere. + Receive real-time alerts and view camera feeds directly from your + phone. +

+
+
+
+ + + + +
+

Energy Efficient

+

+ Optimize your home's energy usage with smart scheduling and + automated routines that save money while reducing your + environmental footprint. +

+
+
+
+ + + + + + +
+

Universal Compatibility

+

+ Works with all major smart home devices and brands. No need for + multiple apps - control everything from a single interface. +

+
+
+
+
+ +
+
+

How We Compare To Others?

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeaturesSmartifyABB-free@homeGoogle Home
Easy InstallationLimitedLimited
Highly customizableLimitedBasic
Voice Control IntegrationBasicLimited
Platform CompatibilityBasicBasic
AI-Powered SuggestionsBasicBasic
Data Privacy + Outstanding + BasicPoor
No Subscription RequiredLimitedLimited
+
+
+
+ +
+
+

Ready to Smartify Your Home?

+

+ Download our app today and experience the future of home automation. + Available on iOS and Android. +

+
+ +
+
+
+ + + + + + diff --git a/marketingwebsite/js/main.js b/marketingwebsite/js/main.js new file mode 100644 index 0000000..e69de29

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↱u3h{VpJOzalz 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 ri(Q*=Wc + + + + twitter [#154] + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/marketingwebsite/index.html b/marketingwebsite/index.html new file mode 100644 index 0000000..198f992 --- /dev/null +++ b/marketingwebsite/index.html @@ -0,0 +1,420 @@ + + + + + + Marketing Website + + + +