Esempio n. 1
0
        /// <summary>
        /// Creates CAN IPNS record object to point to a CAN object of the given hash with the given sequence number.
        /// </summary>
        /// <param name="Hash">Hash of the CAN object to point IPNS record to.</param>
        /// <param name="SequenceNumber">Sequence number of the IPNS record.</param>
        /// <param name="ExpirationTimeSeconds">Expiration time of the newly created record in seconds.</param>
        /// <returns>Valid signed CAN IPNS record object, ready to be sent to CAN server.</returns>
        public static CanIpnsEntry CreateIpnsRecord(byte[] Hash, UInt64 SequenceNumber, int ExpirationTimeSeconds)
        {
            log.Trace("(Hash:'{0}',SequenceNumber:{1},ExpirationTimeSeconds:{2})", Hash.ToBase58(), SequenceNumber, ExpirationTimeSeconds);

            string validityString = DateTime.UtcNow.AddMonths(1).ToString(Rfc3339DateTimeFormat, DateTimeFormatInfo.InvariantInfo);

            byte[] validityBytes = Encoding.UTF8.GetBytes(validityString);

            UInt64 ttlNanoSec = (UInt64)(TimeSpan.FromSeconds(ExpirationTimeSeconds).TotalMilliseconds) * (UInt64)1000000;

            string valueString = CanApi.CreateIpfsPathFromHash(Hash);

            byte[] valueBytes = Encoding.UTF8.GetBytes(valueString);

            CanIpnsEntry res = new CanIpnsEntry()
            {
                Sequence     = SequenceNumber,
                ValidityType = CanIpnsEntry.Types.ValidityType.Eol,
                Ttl          = ttlNanoSec,
                Validity     = ProtocolHelper.ByteArrayToByteString(validityBytes),
                Value        = ProtocolHelper.ByteArrayToByteString(valueBytes)
            };

            res.Signature = ProtocolHelper.ByteArrayToByteString(CreateIpnsRecordSignature(res));

            log.Trace("(-):{0}", res);
            return(res);
        }
Esempio n. 2
0
        /// <summary>
        /// Deletes CAN object from CAN server.
        /// </summary>
        /// <param name="ObjectHash">CAN object hash.</param>
        /// <returns>Structure describing whether the function succeeded and response provided by CAN server.</returns>
        public async Task <CanDeleteResult> CanDeleteObjectByHash(byte[] ObjectHash)
        {
            string objectPath = CanApi.CreateIpfsPathFromHash(ObjectHash);

            return(await CanDeleteObject(objectPath));
        }