11import * as crypto from "crypto" ;
2- import * as bcrypt from "bcryptjs" ;
2+ import * as bcrypt from "bcryptjs" ;
33import * as jsonwebtoken from "jsonwebtoken" ;
44import { Config } from "./Config" ;
55import { TokenUser } from "./Message" ;
66
77export class Crypt {
8- static encryption_key :string = Config . aes_secret . substr ( 0 , 32 ) ; // must be 256 bytes (32 characters)
9- static iv_length :number = 16 ; // for AES, this is always 16
10- static bcrypt_salt_rounds :number = 12 ;
8+ // static encryption_key:string = Config.aes_secret.substr(0,32); // must be 256 bytes (32 characters)
9+ static iv_length : number = 16 ; // for AES, this is always 16
10+ static bcrypt_salt_rounds : number = 12 ;
1111
12- static encrypt ( text :string ) :string {
13- let iv :Buffer = crypto . randomBytes ( Crypt . iv_length ) ;
14- let cipher :crypto . Cipher = crypto . createCipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ) , iv ) ;
15- let encrypted :Buffer = cipher . update ( ( text as any ) ) ;
12+ static encryption_key ( ) : string {
13+ var c = Config ;
14+ return c . aes_secret . substr ( 0 , 32 ) ;
15+ }
16+
17+ static encrypt ( text : string ) : string {
18+ let iv : Buffer = crypto . randomBytes ( Crypt . iv_length ) ;
19+ let cipher : crypto . Cipher = crypto . createCipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ( ) ) , iv ) ;
20+ let encrypted : Buffer = cipher . update ( ( text as any ) ) ;
1621 encrypted = Buffer . concat ( [ encrypted , cipher . final ( ) ] ) ;
1722 return iv . toString ( "hex" ) + ":" + encrypted . toString ( "hex" ) ;
1823 }
1924
20- static decrypt ( text :string ) :string {
21- let textParts :string [ ] = text . split ( ":" ) ;
22- let iv :Buffer = Buffer . from ( textParts . shift ( ) , "hex" ) ;
23- let encryptedText :Buffer = Buffer . from ( textParts . join ( ":" ) , "hex" ) ;
24- let decipher :crypto . Decipher = crypto . createDecipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ) , iv ) ;
25- let decrypted :Buffer = decipher . update ( encryptedText ) ;
25+ static decrypt ( text : string ) : string {
26+ let textParts : string [ ] = text . split ( ":" ) ;
27+ let iv : Buffer = Buffer . from ( textParts . shift ( ) , "hex" ) ;
28+ let encryptedText : Buffer = Buffer . from ( textParts . join ( ":" ) , "hex" ) ;
29+ let decipher : crypto . Decipher = crypto . createDecipheriv ( "aes-256-cbc" , Buffer . from ( Crypt . encryption_key ( ) ) , iv ) ;
30+ let decrypted : Buffer = decipher . update ( encryptedText ) ;
2631 decrypted = Buffer . concat ( [ decrypted , decipher . final ( ) ] ) ;
2732 return decrypted . toString ( ) ;
2833 }
2934
30- static async hash ( password : string ) :Promise < string > {
35+ static async hash ( password : string ) : Promise < string > {
3136 return new Promise < string > ( async ( resolve , reject ) => {
3237 try {
33- bcrypt . hash ( password , Crypt . bcrypt_salt_rounds , async ( error , hash ) => {
34- if ( error ) { return reject ( error ) ; }
38+ bcrypt . hash ( password , Crypt . bcrypt_salt_rounds , async ( error , hash ) => {
39+ if ( error ) { return reject ( error ) ; }
3540 resolve ( hash ) ;
3641 } ) ;
3742 } catch ( error ) {
@@ -40,11 +45,11 @@ export class Crypt {
4045 } ) ;
4146 }
4247
43- static async compare ( password : string , passwordhash :string ) :Promise < boolean > {
48+ static async compare ( password : string , passwordhash : string ) : Promise < boolean > {
4449 return new Promise < boolean > ( async ( resolve , reject ) => {
4550 try {
46- bcrypt . compare ( password , passwordhash , async ( error , res ) => {
47- if ( error ) { return reject ( error ) ; }
51+ bcrypt . compare ( password , passwordhash , async ( error , res ) => {
52+ if ( error ) { return reject ( error ) ; }
4853 resolve ( res ) ;
4954 } ) ;
5055 } catch ( error ) {
@@ -54,13 +59,13 @@ export class Crypt {
5459 }
5560
5661 static createToken ( user : TokenUser ) : string {
57- var token :string = jsonwebtoken . sign ( { data : user } , Crypt . encryption_key ,
62+ var token : string = jsonwebtoken . sign ( { data : user } , Crypt . encryption_key ( ) ,
5863 { expiresIn : "1h" } ) ; // 60 (seconds), "2 days", "10h", "7d"
5964 return token ;
6065 }
6166
6267 static verityToken ( token : string ) : TokenUser {
63- var o :any = jsonwebtoken . verify ( token , Crypt . encryption_key ) ;
68+ var o : any = jsonwebtoken . verify ( token , Crypt . encryption_key ( ) ) ;
6469 o . data = TokenUser . assign ( o . data ) ;
6570 return o . data ;
6671 }
0 commit comments