示例#1
0
 public Puzzle Unblind(BlindFactor blind)
 {
     if (blind == null)
     {
         throw new ArgumentNullException(nameof(blind));
     }
     return(new Puzzle(_RsaPubKey, new PuzzleValue(RsaPubKey.RevertBlind(PuzzleValue._Value, blind))));
 }
示例#2
0
        public override bool Equals(object obj)
        {
            Puzzle item = obj as Puzzle;

            if (item == null)
            {
                return(false);
            }
            return(PuzzleValue.Equals(item.PuzzleValue) && RsaPubKey.Equals(item.RsaPubKey));
        }
示例#3
0
        public RsaKey()
        {
            var gen = new RsaKeyPairGenerator();

            gen.Init(new RsaKeyGenerationParameters(RSA_F4, NBitcoinSecureRandom.Instance, KeySize, 2));             // See A.15.2 IEEE P1363 v2 D1 for certainty parameter
            var pair = gen.GenerateKeyPair();

            _Key    = (RsaPrivateCrtKeyParameters)pair.Private;
            _PubKey = new RsaPubKey((RsaKeyParameters)pair.Public);
        }
示例#4
0
        public override bool Equals(object obj)
        {
            RsaPubKey item = obj as RsaPubKey;

            if (item == null)
            {
                return(false);
            }
            return(_Key.Equals(item._Key));
        }
示例#5
0
 public PuzzleSolution Unblind(RsaPubKey rsaPubKey, BlindFactor blind)
 {
     if (rsaPubKey == null)
     {
         throw new ArgumentNullException(nameof(rsaPubKey));
     }
     if (blind == null)
     {
         throw new ArgumentNullException(nameof(blind));
     }
     return(new PuzzleSolution(rsaPubKey.Unblind(_Value, blind)));
 }
示例#6
0
 public Puzzle(RsaPubKey rsaPubKey, PuzzleValue puzzleValue)
 {
     if (rsaPubKey == null)
     {
         throw new ArgumentNullException(nameof(rsaPubKey));
     }
     if (puzzleValue == null)
     {
         throw new ArgumentNullException(nameof(puzzleValue));
     }
     _RsaPubKey   = rsaPubKey;
     _PuzzleValue = puzzleValue;
 }
示例#7
0
 public static void ReadWriteC(this BitcoinStream bs, ref RsaPubKey pubKey)
 {
     if (bs.Serializing)
     {
         var bytes = pubKey == null ? new byte[0] : pubKey.ToBytes();
         bs.ReadWriteAsVarString(ref bytes);
     }
     else
     {
         byte[] bytes = null;
         bs.ReadWriteAsVarString(ref bytes);
         pubKey = bytes.Length == 0 ? null : new RsaPubKey(bytes);
     }
 }
示例#8
0
 public RsaKey(byte[] bytes)
 {
     if (bytes == null)
     {
         throw new ArgumentNullException(nameof(bytes));
     }
     try
     {
         DerSequence seq2 = GetRSASequence(bytes);
         var         s    = new RsaPrivateKeyStructure(seq2);
         _Key    = new RsaPrivateCrtKeyParameters(s.Modulus, s.PublicExponent, s.PrivateExponent, s.Prime1, s.Prime2, s.Exponent1, s.Exponent2, s.Coefficient);
         _PubKey = new RsaPubKey(new RsaKeyParameters(false, s.Modulus, s.PublicExponent));
     }
     catch (Exception)
     {
         throw new FormatException("Invalid RSA Key");
     }
 }
示例#9
0
 public Puzzle WithRsaKey(RsaPubKey key)
 {
     return(new Puzzle(key, this));
 }
示例#10
0
 public override int GetHashCode()
 {
     return(PuzzleValue.GetHashCode() ^ RsaPubKey.GetHashCode());
 }
示例#11
0
 public Puzzle(RsaPubKey rsaPubKey, PuzzleValue puzzleValue)
 {
     _RsaPubKey   = rsaPubKey ?? throw new ArgumentNullException(nameof(rsaPubKey));
     _PuzzleValue = puzzleValue ?? throw new ArgumentNullException(nameof(puzzleValue));
 }