Esempio n. 1
0
 public static byte[] GetSentTransfer20151004ArgsHmacAuthCode(
     SendTransfer20151004Args request,
     byte[] hmacKey
     )
 {
     Assert.NotNull(request);
     CheckSentTransfer20151004Args(request);
     Assert.NotNull(hmacKey);
     Assert.Equal(hmacKey.Length, 64);
     using (var ms = new MemoryStream())
     {
         var converter = new LittleEndianBitConverter();
         using (var littleStream = new EndianBinaryWriter(converter, ms))
         {
             littleStream.Write(request.RequestGuid.ToByteArray());
             var dt = DateTime.ParseExact(
                 request.SentTimeString,
                 DateTimeStringFormat20151004,
                 CultureInfo.InvariantCulture
             );
             littleStream.Write(dt.Ticks);
             littleStream.Write(request.WalletFromGuid.ToByteArray());
             littleStream.Write(request.WalletToGuid.ToByteArray());
             littleStream.Write(request.Amount);
             littleStream.Write(request.AnonymousTransfer);
             littleStream.Write(request.CommentBytes);
             littleStream.Write(request.MaxFee);
         }
         return new HMACSHA256(hmacKey).ComputeHash(ms.ToArray());
     }
 }
Esempio n. 2
0
 public static void CheckSentTransfer20151004Args(
     SendTransfer20151004Args args
     )
 {
     DateTime dt;
     try
     {
         Assert.NotNull(args);
         Assert.NotEqual(args.WalletFromGuid,Guid.Empty);
         Assert.NotEqual(args.WalletToGuid,Guid.Empty);
         Assert.InRange(
             args.Amount,
             1,
             int.MaxValue
         );
         Assert.NotNull(args.CommentBytes);
         Assert.True(args.CommentBytes.Length <= 64000);
         Assert.False(string.IsNullOrWhiteSpace(args.SentTimeString));
         dt = DateTime.ParseExact(
             args.SentTimeString,
             DateTimeStringFormat20151004,
             CultureInfo.InvariantCulture
         );
         Assert.InRange(
             args.MaxFee,
             0,
             int.MaxValue
         );
     }
     catch
     {
         throw EnumException.Create(
             EGeneralWalletLocalApiErrorCodes20151004.WrongArgs);
     }
     try
     {
         var nowTimeUtc = DateTime.UtcNow;
         Assert.InRange(
             dt,
             nowTimeUtc.Subtract(TimeSpan.FromMinutes(5.0)),
             nowTimeUtc.AddMinutes(5)
         );
     }
     catch
     {
         throw EnumException.Create(
             EGeneralWalletLocalApiErrorCodes20151004.RequestLifetimeExpired);
     }
 }