public Rfc3161TimestampRequest( byte[] messageHash, HashAlgorithmName hashAlgorithm, Oid requestedPolicyId = null, byte[] nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection extensions = null) { if (messageHash == null) { throw new ArgumentNullException(nameof(messageHash)); } int expectedSize; string algorithmIdentifier; if (!ResolveAlgorithm(hashAlgorithm, out expectedSize, out algorithmIdentifier)) { throw new ArgumentOutOfRangeException( nameof(hashAlgorithm), hashAlgorithm, "Hash algorithm is not supported by this method"); } if (messageHash.Length != expectedSize) { throw new ArgumentException("Hash is not the correct size for the identified algorithm", nameof(messageHash)); } if (requestedPolicyId != null && !Rfc3161TimestampUtils.IsLegalOid(requestedPolicyId.Value)) { throw new ArgumentException("Value is not a legal object identifier", nameof(requestedPolicyId)); } if (nonce != null && nonce.Length == 0) { throw new ArgumentException("Nonce must be null or non-empty", nameof(nonce)); } var data = new DataType { _version = 1, _hash = (byte[])messageHash.Clone(), _hashAlgorithm = OpportunisticOid(algorithmIdentifier), _nonce = (byte[])nonce?.Clone(), _requestSignerCertificate = requestSignerCertificates, _extensions = Rfc3161TimestampTokenInfo.ShallowCopy(extensions, preserveNull: true), }; if (requestedPolicyId != null) { data._requestedPolicyId = new Oid(requestedPolicyId.Value, requestedPolicyId.FriendlyName); } RawData = Encode(data); }
public Rfc3161TimestampRequest( byte[] messageHash, Oid hashAlgorithmId, Oid requestedPolicyId = null, byte[] nonce = null, bool requestSignerCertificates = false, X509ExtensionCollection extensions = null) { if (messageHash == null) { throw new ArgumentNullException(nameof(messageHash)); } if (hashAlgorithmId == null) { throw new ArgumentNullException(nameof(hashAlgorithmId)); } if (!Rfc3161TimestampUtils.IsLegalOid(hashAlgorithmId.Value)) { throw new ArgumentException("Value is not a legal object identifier", nameof(hashAlgorithmId)); } if (requestedPolicyId != null && !Rfc3161TimestampUtils.IsLegalOid(requestedPolicyId.Value)) { throw new ArgumentException("Value is not a legal object identifier", nameof(requestedPolicyId)); } if (nonce != null && nonce.Length == 0) { throw new ArgumentException("Nonce must be null or non-empty", nameof(nonce)); } DataType data = new DataType { _version = 1, _hash = (byte[])messageHash.Clone(), _hashAlgorithm = new Oid(hashAlgorithmId.Value, hashAlgorithmId.FriendlyName), _nonce = (byte[])nonce?.Clone(), _requestSignerCertificate = requestSignerCertificates, _extensions = Rfc3161TimestampTokenInfo.ShallowCopy(extensions, preserveNull: true), }; if (requestedPolicyId != null) { data._requestedPolicyId = new Oid(requestedPolicyId.Value, requestedPolicyId.FriendlyName); } _data = data; RawData = Encode(data); }
public X509ExtensionCollection GetExtensions() => Rfc3161TimestampTokenInfo.ShallowCopy(Data._extensions, preserveNull: false);