Browse Source

[MTProto] add padding to encryptedData

[MTProto] throw error if getRandomValues is unsupported
master
Eduard Kuzmenko 3 years ago
parent
commit
3b2b6a6412
  1. 2
      src/lib/mtproto/authorizer.ts
  2. 10
      src/lib/polyfill.ts

2
src/lib/mtproto/authorizer.ts

@ -293,7 +293,7 @@ export class Authorizer { @@ -293,7 +293,7 @@ export class Authorizer {
};
const keyAesEncrypted = await getKeyAesEncrypted();
const encryptedData = await CryptoWorker.invokeCrypto('rsa-encrypt', keyAesEncrypted, auth.publicKey);
const encryptedData = addPadding(await CryptoWorker.invokeCrypto('rsa-encrypt', keyAesEncrypted, auth.publicKey), 256, true, true, true);
const req_DH_params: req_DH_params = {
nonce: auth.nonce,

10
src/lib/polyfill.ts

@ -5,13 +5,10 @@ @@ -5,13 +5,10 @@
*/
import { bytesToHex, bytesFromHex, bufferConcats } from '../helpers/bytes';
import { nextRandomInt } from '../helpers/random';
//export const secureRandom = new SecureRandom();
Object.defineProperty(Uint8Array.prototype, 'hex', {
get: function(): string {
return bytesToHex([...this]);
return bytesToHex(this);
},
set: function(str: string) {
@ -22,13 +19,10 @@ Object.defineProperty(Uint8Array.prototype, 'hex', { @@ -22,13 +19,10 @@ Object.defineProperty(Uint8Array.prototype, 'hex', {
});
Uint8Array.prototype.randomize = function() {
//secureRandom.nextBytes(this);
if(crypto && 'getRandomValues' in crypto) {
crypto.getRandomValues(this);
} else {
for(let i = 0; i < this.length; ++i) {
this[i] = nextRandomInt(255);
}
throw new Error('NO_SECURE_RANDOM');
}
return this;

Loading…
Cancel
Save