planet-nine-app / sessionless

A repo for the sessionless protocol
https://sessionless.org
MIT License
38 stars 10 forks source link

Sessionless in C# #25

Closed Galacticai closed 4 months ago

Galacticai commented 4 months ago

Sessionless in kotlin

classlib:

src/csharp/Sessionless

Tests: (incomplete)

src/csharp/SessionlessTests

Highlights:

Main focus:

Notice:

Almost all classes, objects, and functions are documented using xaml docs which means that your IDE will show you the documentation while typing/hovering/etc...

Class diagrams:

.../Models/ISessionless.cs

classDiagram
  class ISessionless {
    +Vault: IVault
    +GenerateUUID(): string
    +GenerateKeys(): KeyPairHex
    +GenerateKeysAsync(): Task<`KeyPairHex>
    +GetKeys(): KeypairHex?
    +Sign(string): MessageSignatureHex
    +Sign(string, string): MessageSignatureHex
    +Sign(string, ECPrivateKeyParameters): MessageSignatureHex
    +VerifySignature(SignedMessage): bool
    +VerifySignature(SignedMessage, string): bool
    +VerifySignature(SignedMessage, ECPublicKeyParameters): bool
    +Associate(SignedMessages[]): bool
  }
  class Sessionless {
    constructor(IVault)
  }
  ISessionless <-- Sessionless

.../Models/IVault.cs

classDiagram
  class IVault {
    +Get(): KeyPairHex?
    +Save(KeyPairHex)
  }
  class Vault {
    constructor(Func<`KeyPairHex?>, Action<`KeyPairHex>)
  }

  IVault <-- Vault

The rest:

.../Impl/MessageSignature.cs

classDiagram
  class IMessageSignature { }
  class MessageSignatureInt {
    +R: BigInteger
    +S: BigInteger
    +constructor(BigInteger, BigInteger)
    +constructor(BigInteger[])
    +constructor(MessageSignatureHex)
    +toHex(): MessageSignatureHex
    +op_explicit(MessageSignatureInt): MessageSignatureHex
  }
  class MessageSignatureHex {
    +RHex: string
    +SHex: string
    +constructor(string, string)
    +constructor(MessageSignatureInt)
    +toInt(): MessageSignatureInt
    +op_explicit(MessageSignatureHex): MessageSignatureInt
  }

  IMessageSignature <-- MessageSignatureInt
  IMessageSignature <-- MessageSignatureHex

.../Impl/...

classDiagram
  class SignedMessage {
    +Message: string
    +Signature: MessageSignatureHex
    +PublicKey: string
    +constructor(string, MessageSignatureHex, string)
  }

  class KeyPairHex {
    +PrivateKey: string
    +PublicKey: string
    +constructor(string, string)
  }

.../Impl/Exceptions/...

classDiagram
  class KeyPairNotFoundException {
    constructor()
  }
  class HexFormatRequiredException {
    constructor(string)
  }
  Exception <-- KeyPairNotFoundException
  Exception <.. FormatException
  FormatException <-- HexFormatRequiredException
vercel[bot] commented 4 months ago

@Galacticai is attempting to deploy a commit to the zach-planet-nine's projects Team on Vercel.

A member of the Team first needs to authorize it.