コード例 #1
0
        /// <summary>復号化</summary>
        /// <param name="input">AeadResult</param>
        /// <returns>平文(plaintext)</returns>
        public override byte[] Decrypt(AeadResult input)
        {
            // AesGcm実装を初期化
            this.InitAesGcm(false);

            // aead = ciphert + tag
            byte[] aead = null;
            if (input.Aead == null)
            {
                aead = input.CombineByteArrayForDecrypt();
            }
            else
            {
                aead = input.Aead;
            }

            // GCM操作の実行
            byte[] plaint = new byte[this._aesGcm.GetOutputSize(aead.Length)];
            int    len    = this._aesGcm.ProcessBytes(aead, 0, aead.Length, plaint, 0);

            len += this._aesGcm.DoFinal(plaint, len);

            // 平文を返す。
            return(plaint);
        }