【发布时间】:2019-03-10 04:16:16
【问题描述】:
例子:
//generate specific serial number for testing purposes
byte[] result = "A0-41-A1-32-BD-9E-58-98-4B-CC-9E-E6-27-17-B4-10"
.Split('-')
.Select(item => Convert.ToByte(item, 16))
.ToArray();
using (X509Certificate2 cert = certRequest.Create(
caCert,
DateTimeOffset.UtcNow.AddDays(-1),
DateTimeOffset.UtcNow.AddYears(50),
serialNumber))
{
// display serial number for testing purposes
Console.WriteLine(cert.SerialNumber);
}
输入序列号:“A0-41-A1-32-BD-9E-58-98-4B-CC-9E-E6-27-17-B4-10”
证书实际序列号:“00-A0-41-A1-32-BD-9E-58-98-4B-CC-9E-E6-27-17-B4-10”
预期的序列号与输入相同,不带前导零字节。
【问题讨论】:
-
我怀疑很明显它不是负面的。对于输入,“该值被解释为大端字节顺序中任意大小的无符号整数。”返回一个以 00 开头的值意味着即使将最高位的值视为负数,整数值仍然是正确的。要验证此假设,请尝试使用以“70”而不是“A0”开头的序列号。
-
阅读remarks section on ToByte(String, Int32) - “如果fromBase是16”.
标签: c# certificate serial-number