Static Method Summary
| Static Public Methods | ||
| public static |
base64Decode(encryptedBody: string): * Convert encrypted string to array of Buffer |
|
| public static |
base64Encode(decodedBody: string): * Convert array of Buffer to encrypted string |
|
| public static |
checkUrlIsValid(url: string, callback: string) Checks if an input string is a valid URL |
|
| public static |
getCurrentTime(): * Get current time in seconds |
|
| public static |
readKeySet(keySetPath: string): * Reads JWK set in JSON format either from given URL or path to local file |
|
Constructor Summary
| Public Constructor | ||
| public |
constructor(clientPrivateKeySetLocation: string, hyperwalletKeySetLocation: string, encryptionAlgorithm: string, signAlgorithm: string, encryptionMethod: string, jwsExpirationMinutes: string) Create a instance of the Encryption service |
|
Member Summary
| Protected Members | ||
| protected |
Client KeyStore object |
|
| protected |
String that can be a URL or path to file with client JWK set |
|
| protected |
JWE encryption algorithm, by default value = RSA-OAEP-256 |
|
| protected |
JWE encryption method, by default value = A256CBC-HS512 |
|
| protected |
Hyperwallet KeyStore object |
|
| protected |
String that can be a URL or path to file with hyperwallet JWK set |
|
| protected |
Minutes when JWS signature is valid, by default value = 5 |
|
| protected |
JWS signature algorithm, by default value = RS256 |
|
Method Summary
| Public Methods | ||
| public |
checkSignature(body: string): * Verify if response body has a valid signature |
|
| public |
createKeyStore(): * Creates 2 JWK key stores : 1) for client keys 2) for hyperwallet keys |
|
| public |
createKeyStoreFromJwkSet(jwkSetPath: string, jwkSet: string): * Converts JWK set in JSON format to JOSE key store format |
|
| public |
Decrypts encrypted response : 1) decrypts the request body; 2) verifies the payload signature |
|
| public |
decryptBody(body: string): * Decrypts the response body |
|
| public |
Makes an encrypted request : 1) signs the request body; 2) encrypts payload after signature |
|
| public |
encryptBody(body: string): * Encrypts the request body |
|
| public |
Calculates signature expiration time in seconds ( by default expiration time = 5 minutes ) |
|
| public |
Makes signature for request body |
|
Static Public Methods
public static base64Decode(encryptedBody: string): * source
Convert encrypted string to array of Buffer
Params:
| Name | Type | Attribute | Description |
| encryptedBody | string | Encrypted body to be decoded |
Return:
| * |
public static base64Encode(decodedBody: string): * source
Convert array of Buffer to encrypted string
Params:
| Name | Type | Attribute | Description |
| decodedBody | string | Array of Buffer to be decoded to encrypted string |
Return:
| * |
Public Constructors
public constructor(clientPrivateKeySetLocation: string, hyperwalletKeySetLocation: string, encryptionAlgorithm: string, signAlgorithm: string, encryptionMethod: string, jwsExpirationMinutes: string) source
Create a instance of the Encryption service
Params:
| Name | Type | Attribute | Description |
| clientPrivateKeySetLocation | string | String that can be a URL or path to file with client JWK set |
|
| hyperwalletKeySetLocation | string | String that can be a URL or path to file with hyperwallet JWK set |
|
| encryptionAlgorithm | string | JWE encryption algorithm, by default value = RSA-OAEP-256 |
|
| signAlgorithm | string | JWS signature algorithm, by default value = RS256 |
|
| encryptionMethod | string | JWE encryption method, by default value = A256CBC-HS512 |
|
| jwsExpirationMinutes | string | Minutes when JWS signature is valid |
Protected Members
protected clientPrivateKeySetLocation: string source
String that can be a URL or path to file with client JWK set
protected encryptionAlgorithm: string source
JWE encryption algorithm, by default value = RSA-OAEP-256
protected hyperwalletKeySetLocation: string source
String that can be a URL or path to file with hyperwallet JWK set
Public Methods
public checkSignature(body: string): * source
Verify if response body has a valid signature
Params:
| Name | Type | Attribute | Description |
| body | string | The response body to be verified |
Return:
| * |
public createKeyStore(): * source
Creates 2 JWK key stores : 1) for client keys 2) for hyperwallet keys
Return:
| * |
public createKeyStoreFromJwkSet(jwkSetPath: string, jwkSet: string): * source
Converts JWK set in JSON format to JOSE key store format
Return:
| * |
public decrypt(body: string): * source
Decrypts encrypted response : 1) decrypts the request body; 2) verifies the payload signature
Params:
| Name | Type | Attribute | Description |
| body | string | The response body to be decrypted |
Return:
| * |
Test:
- utils/Encryption decrypt()
- utils/Encryption decrypt() should fail decryption when wrong private key is used
- utils/Encryption decrypt() should fail decryption when sign algorithm is not found in keyset
- utils/Encryption decrypt() should fail decryption when algorithm is not found in jwkset
- utils/Encryption decrypt() should fail signature verification when wrong public key is used
- utils/Encryption decrypt() should throw exception when jws signature has expired
public decryptBody(body: string): * source
Decrypts the response body
Params:
| Name | Type | Attribute | Description |
| body | string | The response body to be decrypted |
Return:
| * |
public encrypt(body: string): * source
Makes an encrypted request : 1) signs the request body; 2) encrypts payload after signature
Params:
| Name | Type | Attribute | Description |
| body | string | The request body to be encrypted |
Return:
| * |
Test:
- utils/Encryption encrypt()
- utils/Encryption encrypt() should successfully encrypt and decrypt text message
- utils/Encryption encrypt() should successfully decode and encode encrypted text message
- utils/Encryption encrypt() should throw exception when wrong jwk key set location is given
- utils/Encryption encrypt() should throw exception when wrong jwk key is set for encryption
- utils/Encryption encrypt() should throw exception when signing body with key algorithm that doesn't present in jwkset
- utils/Encryption encrypt() should throw exception when signing body with wrong jwk key
- utils/Encryption encrypt() should throw exception when jwk keyset file is invalid
- utils/Encryption encrypt() should throw exception when jwk keyset file location is wrong
- utils/Encryption encrypt() should successfully encrypt and decrypt text message with url keyset path
- utils/Encryption encrypt() should throw exception when not supported encryption algorithm is given
public encryptBody(body: string): * source
Encrypts the request body
Params:
| Name | Type | Attribute | Description |
| body | string | The request body to be encrypted |
Return:
| * |
public getSignatureExpirationTime(): * source
Calculates signature expiration time in seconds ( by default expiration time = 5 minutes )
Return:
| * |
