对于我的一个应用程序,我正在针对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。
答案 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;
}