protected void configureSettings(Schema schemaVersion) { switch (schemaVersion) { case Schema.V0: aesMode = AesMode.CTR; options = Options.V0; hmac_includesHeader = false; hmac_includesPadding = true; hmac_algorithm = HmacAlgorithm.SHA1; break; case Schema.V1: aesMode = AesMode.CBC; options = Options.V1; hmac_includesHeader = false; hmac_includesPadding = false; hmac_algorithm = HmacAlgorithm.SHA256; break; case Schema.V2: case Schema.V3: aesMode = AesMode.CBC; options = Options.V1; hmac_includesHeader = true; hmac_includesPadding = false; hmac_algorithm = HmacAlgorithm.SHA256; break; } }
// Token: 0x06000013 RID: 19 RVA: 0x00004800 File Offset: 0x00002A00 public string Decrypt(string encryptedBase64, string password) { PayloadComponents payloadComponents = this.unpackEncryptedBase64Data(encryptedBase64); bool flag = !this.hmacIsValid(payloadComponents, password); string result; if (flag) { result = ""; } else { byte[] key = base.generateKey(payloadComponents.salt, password); byte[] bytes = new byte[0]; AesMode aesMode = this.aesMode; if (aesMode != AesMode.CTR) { if (aesMode == AesMode.CBC) { bytes = this.decryptAesCbcPkcs7(payloadComponents.ciphertext, key, payloadComponents.iv); } } else { bytes = base.encryptAesCtrLittleEndianNoPadding(payloadComponents.ciphertext, key, payloadComponents.iv); } result = Encoding.UTF8.GetString(bytes); } return(result); }
public string Decrypt(string encryptedBase64, string password) { string str; PayloadComponents payloadComponent = this.unpackEncryptedBase64Data(encryptedBase64); if (this.hmacIsValid(payloadComponent, password)) { byte[] numArray = base.generateKey(payloadComponent.salt, password); byte[] numArray1 = new byte[0]; AesMode aesMode = this.aesMode; if (aesMode == AesMode.CTR) { numArray1 = base.encryptAesCtrLittleEndianNoPadding(payloadComponent.ciphertext, numArray, payloadComponent.iv); } else if (aesMode == AesMode.CBC) { numArray1 = this.decryptAesCbcPkcs7(payloadComponent.ciphertext, numArray, payloadComponent.iv); } str = Encoding.UTF8.GetString(numArray1); } else { str = ""; } return(str); }
public string Encrypt(string plaintext, string password, Schema schemaVersion) { base.configureSettings(schemaVersion); byte[] bytes = base.TextEncoding.GetBytes(plaintext); PayloadComponents payloadComponent = new PayloadComponents() { schema = new byte[] { (byte)schemaVersion }, options = new byte[] { (byte)this.options }, salt = this.generateRandomBytes(8), hmacSalt = this.generateRandomBytes(8), iv = this.generateRandomBytes(16) }; byte[] numArray = base.generateKey(payloadComponent.salt, password); AesMode aesMode = this.aesMode; if (aesMode == AesMode.CTR) { payloadComponent.ciphertext = base.encryptAesCtrLittleEndianNoPadding(bytes, numArray, payloadComponent.iv); } else if (aesMode == AesMode.CBC) { payloadComponent.ciphertext = this.encryptAesCbcPkcs7(bytes, numArray, payloadComponent.iv); } payloadComponent.hmac = base.generateHmac(payloadComponent, password); List <byte> nums = new List <byte>(); nums.AddRange(base.assembleHeader(payloadComponent)); nums.AddRange(payloadComponent.ciphertext); nums.AddRange(payloadComponent.hmac); return(Convert.ToBase64String(nums.ToArray())); }
// Token: 0x0600001A RID: 26 RVA: 0x00004124 File Offset: 0x00002324 public string Encrypt(string plaintext, string password, Schema schemaVersion) { base.configureSettings(schemaVersion); byte[] bytes = base.TextEncoding.GetBytes(plaintext); PayloadComponents payloadComponents = default(PayloadComponents); payloadComponents.schema = new byte[] { (byte)schemaVersion }; payloadComponents.options = new byte[] { (byte)this.options }; payloadComponents.salt = this.generateRandomBytes(8); payloadComponents.hmacSalt = this.generateRandomBytes(8); payloadComponents.iv = this.generateRandomBytes(16); byte[] key = base.generateKey(payloadComponents.salt, password); AesMode aesMode = this.aesMode; if (aesMode != AesMode.CTR) { if (aesMode == AesMode.CBC) { payloadComponents.ciphertext = this.encryptAesCbcPkcs7(bytes, key, payloadComponents.iv); } } else { payloadComponents.ciphertext = base.encryptAesCtrLittleEndianNoPadding(bytes, key, payloadComponents.iv); } payloadComponents.hmac = base.generateHmac(payloadComponents, password); List <byte> list = new List <byte>(); list.AddRange(base.assembleHeader(payloadComponents)); list.AddRange(payloadComponents.ciphertext); list.AddRange(payloadComponents.hmac); return(Convert.ToBase64String(list.ToArray())); }
public CipherSuiteInfo() { PRFAlgorithm = PRFAlgorithm.TLSPrfSHA256; AesMode = AesMode.CBC; }
protected virtual ICryptoTransform CreateTransform(System.Security.Cryptography.Aes aes, byte[] key, byte[] iv, AesMode mode) { if (aes == null) { throw new ArgumentNullException(nameof(aes)); } if (key == null) { throw new ArgumentNullException(nameof(key)); } if (iv == null) { throw new ArgumentNullException(nameof(iv)); } switch (mode) { case AesMode.Decrypt: return(aes.CreateDecryptor(key, iv)); case AesMode.Encrypt: return(aes.CreateEncryptor(key, iv)); default: throw new ArgumentOutOfRangeException(); } }
public void SetMode(AesMode m) { Mode = m; }
public CipherSuiteInfo() { PRFAlgorithm = PRFAlgorithm.TLSPrfSHA256; AesMode = AesMode.CBC; }
protected void configureSettings(Schema schemaVersion) { switch (schemaVersion) { case Schema.V0: aesMode = AesMode.CTR; options = Options.V0; hmac_includesHeader = false; hmac_includesPadding = true; hmac_algorithm = HmacAlgorithm.SHA1; break; case Schema.V1: aesMode = AesMode.CBC; options = Options.V1; hmac_includesHeader = false; hmac_includesPadding = false; hmac_algorithm = HmacAlgorithm.SHA256; break; case Schema.V2: case Schema.V3: aesMode = AesMode.CBC; options = Options.V1; hmac_includesHeader = true; hmac_includesPadding = false; hmac_algorithm = HmacAlgorithm.SHA256; break; } }