REMME .NET Client
An open source .NET integration library for REMChain, simplifying the access and interaction with REMME nodes both public or permissioned.
How to use
-
Install and run REMME node with required REST API methods enabled. You can check out how to do that at REMME core repo.
-
Install the latest version of library to your .NET project
PM > Install-Package REMME.Auth.Client
- Run methods of RemmeClient class to interract with REMME node.
Note: you may use one of Example console projects from this repo, to start playing with integration library.
Examples
Account management
var newRemmeAccount = new RemmeAccount();
//You can get account data using next properties
//newRemmeAccount.PublicKeyHex
//newRemmeAccount.PrivateKeyHex
//newRemmeAccount.Address
Creating client
//Addresses of Docker container with runing REMME node
var networkConfig = new RemmeNetworkConfig
{
NodeAddress = "192.168.99.100",
SslMode = false,
};
var privateKeyHex ="78a8f39be4570ba8dbb9b87e6918a4c2559bc4e8f3206a0a755c6f2b659a7850";
var client = new RemmeClient(privateKeyHex, networkConfig);
Tokens
var newRemmeAccount = new RemmeAccount();
var someRemmePublicKey = newRemmeAccount.PublicKeyHex;
var balance = await client.Token.GetBalance(someRemmePublicKey);
var transactionResult = await client.Token.Transfer(someRemmePublicKey, 100);
transactionResult.OnREMChainMessage += (sender, e) =>
{
if (e.Status == BatchStatusEnum.COMMITTED)
{
var newBalance = await client.Token.GetBalance(someRemmePublicKey);
transactionResult.CloseWebSocket();
}
else if (e.Status == BatchStatusEnum.NO_RESOURCE)
{
transactionResult.CloseWebSocket();
}
};
transactionResult.ConnectToWebSocket();
Certificates/Public keys
var userKeys = await client.PublicKeyStorage
.GetAccountStoredPublicKeys(client.Account.PublicKeyHex);
var certificateTransactioResult = await client.Certificate
.CreateAndStore(
new CertificateCreateDto
{
CommonName = "userName1",
Email = "user@email.com",
Name = "John",
Surname = "Smith",
CountryName = "US",
ValidityDays = 360
});
certificateTransactioResult.OnREMChainMessage += (sender, e) =>
{
if (e.Status == BatchStatusEnum.COMMITTED)
{
var certX509 = certificateTransactioResult.CertificateDto.Certificate;
var certPubKey = certificateTransactioResult.CertificateDto.PublicKeyPem;
//Check the status of certificate public key
var certificateStatus = await client.Certificate.Check(certX509);
//It can be also done with RemmePublicKeyStorage
var publicKeyCheckResult = await client.PublicKeyStorage.Check(certPubKey);
// In this place additional logic can be stored.
// FI, saving user identifier to DataBase, or creating user account
//Revoking certificate public key
var revokeResult = await client.Certificate.Revoke(certX509).Result;
certificateTransactioResult.CloseWebSocket();
}
else if (e.Status == BatchStatusEnum.NO_RESOURCE)
{
certificateTransactioResult.CloseWebSocket();
}
};
certificateTransactioResult.ConnectToWebSocket();
License
REMME software and documentation are licensed under Apache License Version 2.0.