diff options
Diffstat (limited to 'crypto/src')
-rw-r--r-- | crypto/src/crypto/modes/KCcmBlockCipher.cs | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/crypto/src/crypto/modes/KCcmBlockCipher.cs b/crypto/src/crypto/modes/KCcmBlockCipher.cs index 8f1ed9c6f..1911ba53b 100644 --- a/crypto/src/crypto/modes/KCcmBlockCipher.cs +++ b/crypto/src/crypto/modes/KCcmBlockCipher.cs @@ -36,16 +36,12 @@ namespace Org.BouncyCastle.Crypto.Modes private readonly MemoryStream data = new MemoryStream(); /* - * Nb is a parameter specified in CCM mode of DSTU7624 standard. - * This parameter specifies maximum possible length of input. It should - * be calculated as follows: Nb = 1/8 * (-3 + log[2]Nmax) + 1, - * where Nmax - length of input message in bits. For practical reasons - * Nmax usually less than 4Gb, e.g. for Nmax = 2^32 - 1, Nb = 4. + * * */ private int Nb_ = 4; - public void setNb(int Nb) + private void setNb(int Nb) { if (Nb == 4 || Nb == 6 || Nb == 8) { @@ -57,7 +53,26 @@ namespace Org.BouncyCastle.Crypto.Modes } } - public KCcmBlockCipher(IBlockCipher engine) + /// <summary> + /// Base constructor. Nb value is set to 4. + /// </summary> + /// <param name="engine">base cipher to use under CCM.</param> + public KCcmBlockCipher(IBlockCipher engine): this(engine, 4) + { + } + + /// <summary> + /// Constructor allowing Nb configuration. + /// + /// Nb is a parameter specified in CCM mode of DSTU7624 standard. + /// This parameter specifies maximum possible length of input.It should + /// be calculated as follows: Nb = 1 / 8 * (-3 + log[2]Nmax) + 1, + /// where Nmax - length of input message in bits.For practical reasons + /// Nmax usually less than 4Gb, e.g. for Nmax = 2^32 - 1, Nb = 4. + /// </summary> + /// <param name="engine">base cipher to use under CCM.</param> + /// <param name="Nb">Nb value to use.</param> + public KCcmBlockCipher(IBlockCipher engine, int Nb) { this.engine = engine; this.macSize = engine.GetBlockSize(); @@ -69,6 +84,7 @@ namespace Org.BouncyCastle.Crypto.Modes this.buffer = new byte[engine.GetBlockSize()]; this.s = new byte[engine.GetBlockSize()]; this.counter = new byte[engine.GetBlockSize()]; + setNb(Nb); } public virtual void Init(bool forEncryption, ICipherParameters parameters) |