mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 17:31:39 +00:00
102 lines
5.2 KiB
Plaintext
102 lines
5.2 KiB
Plaintext
@go.Package { name = "github.com/onsonr/sonr/gen/protocol" }
|
|||
|
|
|
||
|
|
module protocol
|
||
|
|
|
||
|
|
import "package://pkg.pkl-lang.org/pkl-go/pkl.golang@0.5.0#/go.pkl"
|
||
|
|
|
||
|
|
class CredentialCreation {
|
||
|
|
response: PublicKeyCredentialCreationOptions = new JsonField { name = "publicKey"; type = "PublicKeyCredentialCreationOptions" }
|
||
|
|
}
|
||
|
|
|
||
|
|
class CredentialAssertion {
|
||
|
|
response: PublicKeyCredentialRequestOptions = new JsonField { name = "publicKey"; type = "PublicKeyCredentialRequestOptions" }
|
||
|
|
}
|
||
|
|
|
||
|
|
class PublicKeyCredentialCreationOptions {
|
||
|
|
relyingParty: RelyingPartyEntity = new JsonField { name = "rp"; type = "RelyingPartyEntity" }
|
||
|
|
user: UserEntity = new JsonField { name = "user"; type = "UserEntity" }
|
||
|
|
challenge: URLEncodedBase64 = new JsonField { name = "challenge"; type = "URLEncodedBase64" }
|
||
|
|
parameters: Listing[CredentialParameter]? = new JsonField { name = "pubKeyCredParams"; type = "[]CredentialParameter" }
|
||
|
|
timeout: Int? = new JsonField { name = "timeout"; type = "int" }
|
||
|
|
credentialExcludeList: Listing[CredentialDescriptor]? = new JsonField { name = "excludeCredentials"; type = "[]CredentialDescriptor" }
|
||
|
|
authenticatorSelection: AuthenticatorSelection? = new JsonField { name = "authenticatorSelection"; type = "AuthenticatorSelection" }
|
||
|
|
hints: Listing[PublicKeyCredentialHints]? = new JsonField { name = "hints"; type = "[]PublicKeyCredentialHints" }
|
||
|
|
attestation: ConveyancePreference? = new JsonField { name = "attestation"; type = "ConveyancePreference" }
|
||
|
|
attestationFormats: Listing[AttestationFormat]? = new JsonField { name = "attestationFormats"; type = "[]AttestationFormat" }
|
||
|
|
extensions: AuthenticationExtensions? = new JsonField { name = "extensions"; type = "AuthenticationExtensions" }
|
||
|
|
}
|
||
|
|
|
||
|
|
class PublicKeyCredentialRequestOptions {
|
||
|
|
challenge: URLEncodedBase64 = new JsonField { name = "challenge"; type = "URLEncodedBase64" }
|
||
|
|
timeout: Int? = new JsonField { name = "timeout"; type = "int" }
|
||
|
|
relyingPartyID: String? = new JsonField { name = "rpId"; type = "string" }
|
||
|
|
allowedCredentials: Listing[CredentialDescriptor]? = new JsonField { name = "allowCredentials"; type = "[]CredentialDescriptor" }
|
||
|
|
userVerification: UserVerificationRequirement? = new JsonField { name = "userVerification"; type = "UserVerificationRequirement" }
|
||
|
|
hints: Listing[PublicKeyCredentialHints]? = new JsonField { name = "hints"; type = "[]PublicKeyCredentialHints" }
|
||
|
|
extensions: AuthenticationExtensions? = new JsonField { name = "extensions"; type = "AuthenticationExtensions" }
|
||
|
|
|
||
|
|
function getAllowedCredentialIDs(): Listing[Listing[Int8]] {
|
||
|
|
this.allowedCredentials?.map((credential) -> credential.credentialID) ?? Listing()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
class CredentialDescriptor {
|
||
|
|
type: CredentialType = new JsonField { name = "type"; type = "CredentialType" }
|
||
|
|
credentialID: URLEncodedBase64 = new JsonField { name = "id"; type = "URLEncodedBase64" }
|
||
|
|
transport: Listing[AuthenticatorTransport]? = new JsonField { name = "transports"; type = "[]AuthenticatorTransport" }
|
||
|
|
attestationType: String? = new JsonField { name = "-"; type = "string" }
|
||
|
|
}
|
||
|
|
|
||
|
|
class CredentialParameter {
|
||
|
|
type: CredentialType = new JsonField { name = "type"; type = "CredentialType" }
|
||
|
|
algorithm: Int = new JsonField { name = "alg"; type = "int" }
|
||
|
|
}
|
||
|
|
|
||
|
|
typealias CredentialType = String
|
||
|
|
|
||
|
|
const PublicKeyCredentialType: CredentialType = "public-key"
|
||
|
|
|
||
|
|
typealias AuthenticationExtensions = Mapping[String, Dynamic]
|
||
|
|
|
||
|
|
class AuthenticatorSelection {
|
||
|
|
authenticatorAttachment: AuthenticatorAttachment? = new JsonField { name = "authenticatorAttachment"; type = "AuthenticatorAttachment" }
|
||
|
|
requireResidentKey: Boolean? = new JsonField { name = "requireResidentKey"; type = "bool" }
|
||
|
|
residentKey: ResidentKeyRequirement? = new JsonField { name = "residentKey"; type = "ResidentKeyRequirement" }
|
||
|
|
userVerification: UserVerificationRequirement? = new JsonField { name = "userVerification"; type = "UserVerificationRequirement" }
|
||
|
|
}
|
||
|
|
|
||
|
|
typealias ConveyancePreference = String
|
||
|
|
|
||
|
|
const PreferNoAttestation: ConveyancePreference = "none"
|
||
|
|
const PreferIndirectAttestation: ConveyancePreference = "indirect"
|
||
|
|
const PreferDirectAttestation: ConveyancePreference = "direct"
|
||
|
|
const PreferEnterpriseAttestation: ConveyancePreference = "enterprise"
|
||
|
|
|
||
|
|
typealias AttestationFormat = String
|
||
|
|
|
||
|
|
const AttestationFormatPacked: AttestationFormat = "packed"
|
||
|
|
const AttestationFormatTPM: AttestationFormat = "tpm"
|
||
|
|
const AttestationFormatAndroidKey: AttestationFormat = "android-key"
|
||
|
|
const AttestationFormatAndroidSafetyNet: AttestationFormat = "android-safetynet"
|
||
|
|
const AttestationFormatFIDOUniversalSecondFactor: AttestationFormat = "fido-u2f"
|
||
|
|
const AttestationFormatApple: AttestationFormat = "apple"
|
||
|
|
const AttestationFormatNone: AttestationFormat = "none"
|
||
|
|
|
||
|
|
typealias PublicKeyCredentialHints = String
|
||
|
|
|
||
|
|
const PublicKeyCredentialHintSecurityKey: PublicKeyCredentialHints = "security-key"
|
||
|
|
const PublicKeyCredentialHintClientDevice: PublicKeyCredentialHints = "client-device"
|
||
|
|
const PublicKeyCredentialHintHybrid: PublicKeyCredentialHints = "hybrid"
|
||
|
|
|
||
|
|
typealias Extensions = Dynamic
|
||
|
|
|
||
|
|
class ServerResponse {
|
||
|
|
status: ServerResponseStatus = new JsonField { name = "status"; type = "ServerResponseStatus" }
|
||
|
|
message: String = new JsonField { name = "errorMessage"; type = "string" }
|
||
|
|
}
|
||
|
|
|
||
|
|
typealias ServerResponseStatus = String
|
||
|
|
|
||
|
|
const StatusOk: ServerResponseStatus = "ok"
|
||
|
|
const StatusFailed= ServerResponseStatus = "failed"
|