public LoanApplicationProcessor( IIdentityVerifier identityVerifier, ICreditScorer creditScorer) { _identityVerifier = identityVerifier ?? throw new ArgumentNullException(nameof(identityVerifier)); _creditScorer = creditScorer ?? throw new ArgumentNullException(nameof(creditScorer)); }
/// <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)); }
/// <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; }
/// <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; }
/// <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; }