summaryrefslogtreecommitdiff
path: root/src/keyDerivation.cpp
diff options
context:
space:
mode:
authorChristian Pointner <equinox@anytun.org>2009-02-18 13:08:59 +0000
committerChristian Pointner <equinox@anytun.org>2009-02-18 13:08:59 +0000
commitd97760a781a793d35dfe75367dd8d80ab59bbb49 (patch)
tree362e1f7f198e2549b56dab7bf1eb564d15b48b91 /src/keyDerivation.cpp
parentstatic build mostly fixed (diff)
added anytun02 compat runtime switch
Diffstat (limited to 'src/keyDerivation.cpp')
-rw-r--r--src/keyDerivation.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/keyDerivation.cpp b/src/keyDerivation.cpp
index db8cc1b..bfdef3f 100644
--- a/src/keyDerivation.cpp
+++ b/src/keyDerivation.cpp
@@ -138,6 +138,14 @@ AesIcmKeyDerivation::AesIcmKeyDerivation() : KeyDerivation(DEFAULT_KEY_LENGTH)
#endif
}
+AesIcmKeyDerivation::AesIcmKeyDerivation(bool a) : KeyDerivation(a, DEFAULT_KEY_LENGTH)
+{
+#ifndef USE_SSL_CRYPTO
+ for(int i=0; i<2; i++)
+ handle_[i] = NULL;
+#endif
+}
+
AesIcmKeyDerivation::AesIcmKeyDerivation(u_int16_t key_length) : KeyDerivation(key_length)
{
#ifndef USE_SSL_CRYPTO
@@ -146,6 +154,14 @@ AesIcmKeyDerivation::AesIcmKeyDerivation(u_int16_t key_length) : KeyDerivation(k
#endif
}
+AesIcmKeyDerivation::AesIcmKeyDerivation(bool a, u_int16_t key_length) : KeyDerivation(a, key_length)
+{
+#ifndef USE_SSL_CRYPTO
+ for(int i=0; i<2; i++)
+ handle_[i] = NULL;
+#endif
+}
+
AesIcmKeyDerivation::~AesIcmKeyDerivation()
{
WritersLock lock(mutex_);
@@ -257,8 +273,14 @@ bool AesIcmKeyDerivation::calcCtr(kd_dir_t dir, seq_nr_t* r, satp_prf_label_t la
}
memcpy(ctr_[dir].salt_.buf_, master_salt_.getBuf(), SALT_LENGTH);
ctr_[dir].salt_.zero_ = 0;
- ctr_[dir].params_.label_ ^= label;
- ctr_[dir].params_.r_ ^= SEQ_NR_T_HTON(*r);
+ if(anytun02_compat_) {
+ ctr_[dir].params_compat_.label_ ^= label;
+ ctr_[dir].params_compat_.r_ ^= SEQ_NR_T_HTON(*r);
+ }
+ else {
+ ctr_[dir].params_.label_ ^= label;
+ ctr_[dir].params_.r_ ^= SEQ_NR_T_HTON(*r);
+ }
return true;
}