aboutsummaryrefslogtreecommitdiffstats
path: root/src/kdf/prf_x942/prf_x942.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kdf/prf_x942/prf_x942.cpp')
-rw-r--r--src/kdf/prf_x942/prf_x942.cpp92
1 files changed, 0 insertions, 92 deletions
diff --git a/src/kdf/prf_x942/prf_x942.cpp b/src/kdf/prf_x942/prf_x942.cpp
deleted file mode 100644
index 149be163f..000000000
--- a/src/kdf/prf_x942/prf_x942.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-* X9.42 PRF
-* (C) 1999-2007 Jack Lloyd
-*
-* Distributed under the terms of the Botan license
-*/
-
-#include <botan/prf_x942.h>
-#include <botan/der_enc.h>
-#include <botan/oids.h>
-#include <botan/sha160.h>
-#include <botan/loadstor.h>
-#include <algorithm>
-#include <memory>
-
-namespace Botan {
-
-namespace {
-
-/*
-* Encode an integer as an OCTET STRING
-*/
-std::vector<byte> encode_x942_int(u32bit n)
- {
- byte n_buf[4] = { 0 };
- store_be(n, n_buf);
- return DER_Encoder().encode(n_buf, 4, OCTET_STRING).get_contents_unlocked();
- }
-
-}
-
-/*
-* X9.42 PRF
-*/
-secure_vector<byte> X942_PRF::derive(size_t key_len,
- const byte secret[], size_t secret_len,
- const byte salt[], size_t salt_len) const
- {
- SHA_160 hash;
- const OID kek_algo(key_wrap_oid);
-
- secure_vector<byte> key;
- u32bit counter = 1;
-
- while(key.size() != key_len && counter)
- {
- hash.update(secret, secret_len);
-
- hash.update(
- DER_Encoder().start_cons(SEQUENCE)
-
- .start_cons(SEQUENCE)
- .encode(kek_algo)
- .raw_bytes(encode_x942_int(counter))
- .end_cons()
-
- .encode_if(salt_len != 0,
- DER_Encoder()
- .start_explicit(0)
- .encode(salt, salt_len, OCTET_STRING)
- .end_explicit()
- )
-
- .start_explicit(2)
- .raw_bytes(encode_x942_int(static_cast<u32bit>(8 * key_len)))
- .end_explicit()
-
- .end_cons().get_contents()
- );
-
- secure_vector<byte> digest = hash.final();
- const size_t needed = std::min(digest.size(), key_len - key.size());
- key += std::make_pair(&digest[0], needed);
-
- ++counter;
- }
-
- return key;
- }
-
-/*
-* X9.42 Constructor
-*/
-X942_PRF::X942_PRF(const std::string& oid)
- {
- if(OIDS::have_oid(oid))
- key_wrap_oid = OIDS::lookup(oid).as_string();
- else
- key_wrap_oid = oid;
- }
-
-}