11import * as crypto from "crypto" ;
2- import * as bcrypt from "bcryptjs" ;
2+ import * as bcrypt from "bcryptjs" ;
33import * as jsonwebtoken from "jsonwebtoken" ;
44import { Base } from "./base" ;
55import { TokenUser } from "./TokenUser" ;
66import { User } from "./User" ;
77import { Config } from "./Config" ;
88
99export class Crypt {
10- static encryption_key :string = Config . aes_secret . substr ( 0 , 32 ) ; // must be 256 bytes (32 characters)
11- static iv_length :number = 16 ; // for AES, this is always 16
12- static bcrypt_salt_rounds :number = 12 ;
10+ static encryption_key : string = Config . aes_secret . substr ( 0 , 32 ) ; // must be 256 bytes (32 characters)
11+ static iv_length : number = 16 ; // for AES, this is always 16
12+ static bcrypt_salt_rounds : number = 12 ;
1313
14- static encrypt ( text :string ) :string {
15- let iv :Buffer = crypto . randomBytes ( Crypt . iv_length ) ;
16- let cipher :crypto . Cipher = crypto . createCipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ) , iv ) ;
17- let encrypted :Buffer = cipher . update ( ( text as any ) ) ;
14+ static encrypt ( text : string ) : string {
15+ let iv : Buffer = crypto . randomBytes ( Crypt . iv_length ) ;
16+ let cipher : crypto . Cipher = crypto . createCipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ) , iv ) ;
17+ let encrypted : Buffer = cipher . update ( ( text as any ) ) ;
1818 encrypted = Buffer . concat ( [ encrypted , cipher . final ( ) ] ) ;
1919 return iv . toString ( "hex" ) + ":" + encrypted . toString ( "hex" ) ;
2020 }
2121
22- static decrypt ( text :string ) :string {
23- let textParts :string [ ] = text . split ( ":" ) ;
24- let iv :Buffer = Buffer . from ( textParts . shift ( ) , "hex" ) ;
25- let encryptedText :Buffer = Buffer . from ( textParts . join ( ":" ) , "hex" ) ;
26- let decipher :crypto . Decipher = crypto . createDecipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ) , iv ) ;
27- let decrypted :Buffer = decipher . update ( encryptedText ) ;
22+ static decrypt ( text : string ) : string {
23+ let textParts : string [ ] = text . split ( ":" ) ;
24+ let iv : Buffer = Buffer . from ( textParts . shift ( ) , "hex" ) ;
25+ let encryptedText : Buffer = Buffer . from ( textParts . join ( ":" ) , "hex" ) ;
26+ let decipher : crypto . Decipher = crypto . createDecipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ) , iv ) ;
27+ let decrypted : Buffer = decipher . update ( encryptedText ) ;
2828 decrypted = Buffer . concat ( [ decrypted , decipher . final ( ) ] ) ;
2929 return decrypted . toString ( ) ;
3030 }
3131
32- static async hash ( password : string ) :Promise < string > {
32+ static async hash ( password : string ) : Promise < string > {
3333 return new Promise < string > ( async ( resolve , reject ) => {
3434 try {
35- bcrypt . hash ( password , Crypt . bcrypt_salt_rounds , async ( error , hash ) => {
36- if ( error ) { return reject ( error ) ; }
35+ bcrypt . hash ( password , Crypt . bcrypt_salt_rounds , async ( error , hash ) => {
36+ if ( error ) { return reject ( error ) ; }
3737 resolve ( hash ) ;
3838 } ) ;
3939 } catch ( error ) {
@@ -42,11 +42,11 @@ export class Crypt {
4242 } ) ;
4343 }
4444
45- static async compare ( password : string , passwordhash :string ) :Promise < boolean > {
45+ static async compare ( password : string , passwordhash : string ) : Promise < boolean > {
4646 return new Promise < boolean > ( async ( resolve , reject ) => {
4747 try {
48- bcrypt . compare ( password , passwordhash , async ( error , res ) => {
49- if ( error ) { return reject ( error ) ; }
48+ bcrypt . compare ( password , passwordhash , async ( error , res ) => {
49+ if ( error ) { return reject ( error ) ; }
5050 resolve ( res ) ;
5151 } ) ;
5252 } catch ( error ) {
@@ -55,20 +55,20 @@ export class Crypt {
5555 } ) ;
5656 }
5757
58- static createToken ( item : User | TokenUser ) : string {
59- var user :TokenUser = new TokenUser ( item ) ;
60- var token :string = jsonwebtoken . sign ( { data : user } , Crypt . encryption_key ,
58+ static createToken ( item : User | TokenUser , expiresIn : string ) : string {
59+ var user : TokenUser = new TokenUser ( item ) ;
60+ var token : string = jsonwebtoken . sign ( { data : user } , Crypt . encryption_key ,
6161 { expiresIn : "1h" } ) ; // 60 (seconds), "2 days", "10h", "7d"
6262 return token ;
6363 }
6464
6565 static verityToken ( token : string ) : TokenUser {
66- var o :any = jsonwebtoken . verify ( token , Crypt . encryption_key ) ;
66+ var o : any = jsonwebtoken . verify ( token , Crypt . encryption_key ) ;
6767 o . data = TokenUser . assign ( o . data ) ;
6868 return o . data ;
6969 }
7070 static decryptToken ( token : string ) : any {
71- var o :any = jsonwebtoken . verify ( token , Crypt . encryption_key ) ;
71+ var o : any = jsonwebtoken . verify ( token , Crypt . encryption_key ) ;
7272 return o ;
7373 }
7474}
0 commit comments