如何在店内找到我需要的证书?

时间:2015-09-08 12:17:09

标签: c# api x509certificate certificate-store

对于我的一个应用程序,我正在针对TeleCashAPI(Internet支付网关)进行开发。我需要在每次通话时发送客户证书(p12)。

到目前为止,我已经通过文件系统加载了客户端证书

public void AddCertificate(X509Certificate certificate)
{
    WebRequest.ClientCertificates.Add(certificate);
}

现在我的客户想让它更通用。它应该安装在客户机上(与此api交谈)。我仍然知道密码是什么,但我不知道证书。

我如何获得证书?

answer开始,我看到了如何获得整个列表:

X509Store store = new X509Store("My");

store.Open(OpenFlags.ReadOnly);

foreach (X509Certificate2 mCert in store.Certificates){
    //TODO's
}

但我如何找到我特别想要的证书?这甚至是不可能的?

我真的很喜欢这个话题。

更清楚一点:

通过双击安装证书。我无法控制这个过程。我的任务是找到证书,用于TeleCash。

1 个答案:

答案 0 :(得分:3)

要知道证书哈希 - 双击证书 - >详情 - >指纹

- (NSNumber *)convertNumber:(NSNumber *)number fromUnit:(DDUnit)fromUnit toUnit:(DDUnit)toUnit {
    if (fromUnit == toUnit) { return number; }

    //make sure it's an NSDecimalNumber
    NSDecimalNumber *source = [NSDecimalNumber decimalNumberWithDecimal:[number decimalValue]];

    NSDecimalNumber *convertToBaseUnit = [[self class] multiplierForUnit:fromUnit];

    NSDecimalNumber * n1 = [NSDecimalNumber decimalNumberWithString:[source stringValue]];
    NSDecimalNumber * n2 = [NSDecimalNumber decimalNumberWithString:[convertToBaseUnit stringValue]];

    NSDecimalNumber *valueInBaseUnit = [n1 decimalNumberByMultiplyingBy:n2];

    NSDecimalNumber *convertFromBaseUnit = [[self class] multiplierForUnit:toUnit];
    if ([convertFromBaseUnit isEqual:[NSDecimalNumber zero]]) {
        convertFromBaseUnit = [NSDecimalNumber one];
    }
    NSDecimalNumber * n3 = [NSDecimalNumber decimalNumberWithString:[valueInBaseUnit stringValue]];
    NSDecimalNumber * n4 = [NSDecimalNumber decimalNumberWithString:[convertFromBaseUnit stringValue]];

    NSDecimalNumber *valueInTargetUnit = [n3 decimalNumberByDividingBy:n4];

    return valueInTargetUnit;
}