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 {
}; };
const keyAesEncrypted = await getKeyAesEncrypted(); 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 = { const req_DH_params: req_DH_params = {
nonce: auth.nonce, nonce: auth.nonce,

10
src/lib/polyfill.ts

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

Loading…
Cancel
Save