List <Byte> buildTbsRequest(X500DistinguishedName requester) { List <Byte> tbsRequest = new List <Byte>(); if (requester != null) { X509AlternativeName requesterName = new X509AlternativeName(X509AlternativeNamesEnum.DirectoryName, requester); tbsRequest.AddRange(Asn1Utils.Encode(requesterName.RawData, 0xa1)); } tbsRequest.AddRange(RequestList.Encode()); if (Nonce) { _listExtensions.Add(new X509NonceExtension()); Byte[] extensionsbytes = Asn1Utils.Encode(Crypt32Managed.EncodeX509Extensions(Extensions), 162); tbsRequest.AddRange(extensionsbytes); NonceValue = _listExtensions[_listExtensions.Count - 1].Format(false).Trim(); } return(Asn1Utils.Encode(tbsRequest.ToArray(), 48).ToList()); }