private void CalcSignCertificateChain() {
ArrayList cc = new ArrayList();
cc.Add(signCert);
ArrayList oc = new ArrayList(certs);
for (int k = 0; k < oc.Count; ++k) {
if (signCert.SerialNumber.Equals(((X509Certificate)oc[k]).SerialNumber)) {
oc.RemoveAt(k);
--k;
continue;
}
}
bool found = true;
while (found) {
X509Certificate v = (X509Certificate)cc[cc.Count - 1];
found = false;
for (int k = 0; k < oc.Count; ++k) {
try {
v.Verify(((X509Certificate)oc[k]).GetPublicKey());
found = true;
cc.Add(oc[k]);
oc.RemoveAt(k);
break;
}
catch {
}
}
}
signCerts = cc;
}