33 using namespace scc::crypto;
41 SecVec<T>::SecVec(
typename std::vector<T>::size_type sz,
const typename std::vector<T>::value_type& value) : std::vector<T>(sz, value)
48 explicit_bzero(std::vector<T>::data(), std::vector<T>::size());
54 explicit_bzero(std::vector<T>::data(), std::vector<T>::size());
55 std::vector<T>::clear();
61 if (std::vector<T>::size() > count)
63 explicit_bzero(std::vector<T>::data()+count, std::vector<T>::size()-count);
65 std::vector<T>::resize(count);
69 void SecVec<T>::resize(
typename std::vector<T>::size_type count,
const typename std::vector<T>::value_type& value)
71 if (std::vector<T>::size() > count)
73 explicit_bzero(std::vector<T>::data()+count, std::vector<T>::size()-count);
75 std::vector<T>::resize(count, value);
82 template
void SecVec<
unsigned char>::resize(typename std::vector<
unsigned char>::size_type);
83 template
void SecVec<
unsigned char>::resize(typename std::vector<
unsigned char>::size_type, const typename std::vector<
unsigned char>::value_type&);
85 template
SecVec<
char>::
SecVec(typename std::vector<
char>::size_type);
86 template
SecVec<
char>::
SecVec(typename std::vector<
char>::size_type, const typename std::vector<
char>::value_type&);
88 template
void SecVec<
char>::clear() noexcept;
89 template
void SecVec<
char>::resize(typename std::vector<
char>::size_type);
90 template
void SecVec<
char>::resize(typename std::vector<
char>::size_type, const typename std::vector<
char>::value_type&);
93 std::istream& operator >>(std::istream& is, scc::crypto::
SecVec<T>& sv)
100 if (is.fail() && !is.eof())
102 throw std::runtime_error(
"secure vector stream read error");
110 template <
typename T>
113 os.write((
const char*)sv.data(), sv.size()*
sizeof(T));
116 throw std::runtime_error(
"secure vector stream write error");
std::ostream & operator<<(std::ostream &, const scc::net::InetAddr &)
Print the socket address details to an output stream.