| File: System\Security\Cryptography\Pkcs\Asn1\Rfc3161Accuracy.manual.cs | Web Access |
| Project: src\runtime\src\libraries\System.Security.Cryptography.Pkcs\src\System.Security.Cryptography.Pkcs.csproj (System.Security.Cryptography.Pkcs) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.InteropServices; using System.Security.Cryptography.Asn1; namespace System.Security.Cryptography.Pkcs.Asn1 { internal partial struct Rfc3161Accuracy { // Parameter name (and exception) match the Rfc3161TimestampTokenInfo ctor. internal Rfc3161Accuracy(long accuracyInMicroseconds) { if (accuracyInMicroseconds < 0) { throw new ArgumentOutOfRangeException(nameof(accuracyInMicroseconds)); } long totalMillis = Math.DivRem(accuracyInMicroseconds, 1000, out long micros); long seconds = Math.DivRem(totalMillis, 1000, out long millis); if (seconds != 0) { Seconds = checked((int)seconds); } else { Seconds = null; } if (millis != 0) { Millis = (int)millis; } else { Millis = null; } if (micros != 0) { Micros = (int)micros; } else { Micros = null; } } internal long TotalMicros => 1_000_000L * Seconds.GetValueOrDefault() + 1000L * Millis.GetValueOrDefault() + Micros.GetValueOrDefault(); } }