public LoanApplicationProcessor(
     IIdentityVerifier identityVerifier,
     ICreditScorer creditScorer)
 {
     _identityVerifier = identityVerifier ?? throw new ArgumentNullException(nameof(identityVerifier));
     _creditScorer     = creditScorer ?? throw new ArgumentNullException(nameof(creditScorer));
 }
Пример #2
0
        /// <summary>
        /// Constructs a new unauthorized RIM packet handler.
        /// </summary>
        /// <param name="packetStream">A packet stream to respond to handled packets with.</param>
        /// <param name="signatureAlgorithm">The local signature algorithm capable of creating signatures.</param>
        /// <param name="identityVerifier">An identity verifier used to verify the identity of the remote peer.</param>
        public RimPacketHandlerUnauthorized(IPacketStream packetStream, SignatureAlgorithm signatureAlgorithm, IIdentityVerifier identityVerifier) : base(packetStream)
        {
            if (!signatureAlgorithm.CanSign)
            {
                throw new ArgumentException("Signature algorithm is not capable of signing messages.", "signatureAlgorithm");
            }

            this.signatureAlgorithm = signatureAlgorithm;

            this.identityVerifier = identityVerifier;

            //Generate a 512-bit salt to verify the endpoint.
            salt = new byte[64];
            new Random().NextBytes(salt);

            //Write a connection packet to the endpoint.
            requestedIdentity = true;
            Stream.WritePacket(new Packet2IdentityRequest(1, salt));
        }
Пример #3
0
 /// <summary>
 /// Creates a new RIM (Reliable IM) socket. This layer does not provide
 /// message encryption, protocol security, or reliability. Each of these
 /// should be provided in the reference socket.
 ///
 /// A typical protocol stack is as follows:
 ///     Application layer: RIM
 ///     Security layer:    SSL/ESL
 ///     Transport layer:   UDT/UDP or TCP
 ///     Network layer:     IP
 /// </summary>
 /// <param name="baseSocket">Base socket to reference.</param>
 /// <param name="signatureAlgorithm">Signature algorithm to reference.</param>
 /// <param name="identityVerifier">Identity verifier to use when verifying peers.</param>
 public RimSocket(Socket baseSocket, SignatureAlgorithm signatureAlgorithm, IIdentityVerifier identityVerifier)
 {
     this.baseSocket         = baseSocket;
     this.signatureAlgorithm = signatureAlgorithm;
     this.identityVerifier   = identityVerifier;
 }
Пример #4
0
 /// <summary>
 /// Constructs a new RSA key exchange algorithm for use with exchanging RSA identities and verifying them to produce
 /// a two-way symmetrical cipher pair.
 /// </summary>
 /// <param name="localRsa">Local RSA instance to use during key exchange.</param>
 /// <param name="identityIdentifier">A key identifier to use when verifying remote identities.</param>
 /// <param name="factory">A symmetric key algorithm factory to use when generating and creating keypairs.</param>
 public RSAKeyExchangeAlgorithm(RSACryptoServiceProvider localRsa, IIdentityVerifier identityIdentifier, SymmetricAlgorithmFactory factory)
 {
     this.localRsa         = localRsa;
     this.identityVerifier = identityIdentifier;
     this.factory          = factory;
 }
Пример #5
0
 /// <summary>
 /// Creates a new RIM (Reliable IM) socket listener.
 /// </summary>
 /// <param name="baseListener">Base listener to reference.</param>
 /// <param name="signatureAlgorithm">Signature algorithm to reference.</param>
 /// <param name="identityVerifier">Identity verifier to use when verifying connecting peers.</param>
 public RimListener(SocketListener baseListener, SignatureAlgorithm signatureAlgorithm, IIdentityVerifier identityVerifier)
 {
     this.baseListener       = baseListener;
     this.signatureAlgorithm = signatureAlgorithm;
     this.identityVerifier   = identityVerifier;
 }