summaryrefslogtreecommitdiff
path: root/modes.cpp
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2003-07-04 00:17:37 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2003-07-04 00:17:37 +0000
commit572fe07633123ce38abf28c6426356e37aef3a99 (patch)
tree0536d87e504a82920156c239bc5ae6aa43e70ebc /modes.cpp
parent3e8c979ddc194e043567c036321e67c89f847362 (diff)
downloadcryptopp-572fe07633123ce38abf28c6426356e37aef3a99.tar.gz
create DLL version, fix GetNextIV() bug in CTR and OFB modes
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@87 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'modes.cpp')
-rw-r--r--modes.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/modes.cpp b/modes.cpp
index 09c370e..0d163cb 100644
--- a/modes.cpp
+++ b/modes.cpp
@@ -1,14 +1,18 @@
// modes.cpp - written and placed in the public domain by Wei Dai
#include "pch.h"
+
+#ifndef CRYPTOPP_IMPORTS
+
#include "modes.h"
+#ifndef NDEBUG
#include "des.h"
-
-#include "strciphr.cpp"
+#endif
NAMESPACE_BEGIN(CryptoPP)
+#ifndef NDEBUG
void Modes_TestInstantiations()
{
CFB_Mode<DES>::Encryption m0;
@@ -18,17 +22,7 @@ void Modes_TestInstantiations()
ECB_Mode<DES>::Encryption m4;
CBC_Mode<DES>::Encryption m5;
}
-
-// explicit instantiations for Darwin gcc-932.1
-template class CFB_CipherTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, SymmetricCipher> >;
-template class CFB_EncryptionTemplate<>;
-template class CFB_DecryptionTemplate<>;
-template class AdditiveCipherTemplate<>;
-template class CFB_CipherTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy> >;
-template class CFB_EncryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy> >;
-template class CFB_DecryptionTemplate<AbstractPolicyHolder<CFB_CipherAbstractPolicy, CFB_ModePolicy> >;
-template class AdditiveCipherTemplate<AbstractPolicyHolder<AdditiveCipherAbstractPolicy, OFB_ModePolicy> >;
-template class AdditiveCipherTemplate<AbstractPolicyHolder<AdditiveCipherAbstractPolicy, CTR_ModePolicy> >;
+#endif
void CipherModeBase::SetKey(const byte *key, unsigned int length, const NameValuePairs &params)
{
@@ -64,8 +58,15 @@ static inline void IncrementCounterByOne(byte *inout, unsigned int s)
static inline void IncrementCounterByOne(byte *output, const byte *input, unsigned int s)
{
- for (int i=s-1, carry=1; i>=0; i--)
- carry = !(output[i] = input[i]+carry) && carry;
+ int i, carry;
+ for (i=s-1, carry=1; i>=0 && carry; i--)
+ carry = !(output[i] = input[i]+1);
+ memcpy(output, input, i+1);
+}
+
+void CTR_ModePolicy::GetNextIV(byte *IV)
+{
+ IncrementCounterByOne(IV, m_counterArray, BlockSize());
}
inline void CTR_ModePolicy::ProcessMultipleBlocks(byte *output, const byte *input, unsigned int n)
@@ -248,3 +249,5 @@ void CBC_CTS_Decryption::ProcessLastBlock(byte *outString, const byte *inString,
}
NAMESPACE_END
+
+#endif