package net.sergeych.superlogin import kotlinx.serialization.Serializable import net.sergeych.parsec3.CommandHost import net.sergeych.parsec3.WithAdapter import net.sergeych.unikrypto.PublicKey @Serializable data class RegistrationArgs( val loginName: String, val loginId: ByteArray, val loginPublicKey: PublicKey, val derivationParams: PasswordDerivationParams, val restoreId: ByteArray, val restoreData: ByteArray, val extraData: ByteArray? = null ) @Serializable sealed class AuthenticationResult { @Serializable data class Success( val loginName: String, val loginToken: ByteArray, val applicationData: ByteArray? ): AuthenticationResult() @Serializable object LoginUnavailable: AuthenticationResult() @Serializable object LoginIdUnavailable: AuthenticationResult() @Serializable object RestoreIdUnavailable: AuthenticationResult() } @Serializable data class RequestLoginDataArgs( val loginName: String, val loginId: ByteArray, ) @Serializable data class RequestLoginDataResult( val packedACO: ByteArray, val nonce: ByteArray ) @Serializable data class LoginByPasswordPayload( val loginName: String ) class SuperloginServerApi : CommandHost() { val slGetNonce by command() val slRegister by command() val slLogout by command() val slLoginByToken by command() val slRequestDerivationParams by command() val slRequestLoginData by command() val slLoginByKey by command() /** * Get resstoreData by restoreId: password reset procedure start. */ // val requestUserLogin by command() // val performLogin by command