protected override void Dispose (bool disposing)
{
if (!m_disposed) {
// Always zeroize private key
if (d != null) {
d.Clear ();
d = null;
}
if (p != null) {
p.Clear ();
p = null;
}
if (q != null) {
q.Clear ();
q = null;
}
if (dp != null) {
dp.Clear ();
dp = null;
}
if (dq != null) {
dq.Clear ();
dq = null;
}
if (qInv != null) {
qInv.Clear ();
qInv = null;
}
if (disposing) {
// clear public key
if (e != null) {
e.Clear ();
e = null;
}
if (n != null) {
n.Clear ();
n = null;
}
}
}
// call base class
// no need as they all are abstract before us
m_disposed = true;
}