diff --git a/AobaClient/src/components/passkey.rs b/AobaClient/src/components/passkey.rs
index b35ed01..ecc9a15 100644
--- a/AobaClient/src/components/passkey.rs
+++ b/AobaClient/src/components/passkey.rs
@@ -17,6 +17,8 @@ pub fn PasskeyRegistrationButton() -> Element
fn start_passkey_registration() {}
+fn create_credential() {}
+
#[component]
pub fn PasskeyLoginButton() -> Element
{
diff --git a/AobaCore/AobaCore.csproj b/AobaCore/AobaCore.csproj
index bfa7a5d..08497b5 100644
--- a/AobaCore/AobaCore.csproj
+++ b/AobaCore/AobaCore.csproj
@@ -7,16 +7,16 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/AobaServer/AobaServer.csproj b/AobaServer/AobaServer.csproj
index 997640b..4894870 100644
--- a/AobaServer/AobaServer.csproj
+++ b/AobaServer/AobaServer.csproj
@@ -10,22 +10,22 @@
-
-
-
+
+
+
runtime; build; native; contentfiles; analyzers; buildtransitive
all
-
-
-
+
+
+
-
+
-
-
-
+
+
+
diff --git a/AobaServer/Proto/Types.proto b/AobaServer/Proto/Types.proto
index 9fe088f..b110e41 100644
--- a/AobaServer/Proto/Types.proto
+++ b/AobaServer/Proto/Types.proto
@@ -1,120 +1,120 @@
-syntax = "proto3";
-
-option csharp_namespace = "Aoba.RPC";
-package aoba;
-import "google/protobuf/empty.proto";
-
-message Credentials{
- string user = 1;
- string password = 2;
-}
-
-
-
-
-message Jwt{
- string token = 1;
-}
-
-message LoginResponse{
- oneof result {
- Jwt jwt = 1;
- LoginError error = 2;
- }
-}
-
-message LoginError{
- string message = 1;
-}
-
-message PageFilter {
- optional int32 page = 1;
- optional int32 pageSize = 2;
- optional string query = 3;
-}
-
-message Id {
- string value = 1;
-}
-
-message MediaResponse {
- oneof result {
- MediaModel value = 1;
- google.protobuf.Empty empty = 2;
- }
-}
-
-message ListResponse {
- repeated MediaModel items = 1;
- Pagination pagination = 2;
-}
-
-message Pagination {
- int32 page = 1;
- int32 pageSize = 2;
- int32 totalPages = 3;
- int32 totalItems = 4;
- optional string query = 5;
-}
-
-message UserResponse {
- oneof userResult {
- UserModel user = 1;
- google.protobuf.Empty empty = 2;
- }
-}
-
-message UserModel {
- Id id = 1;
- string username = 2;
- string email = 3;
- bool isAdmin = 4;
-}
-
-
-message MediaModel {
- Id id = 1;
- string fileName = 2;
- MediaType mediaType = 3;
- string ext = 4;
- int32 viewCount = 5;
- Id owner = 6;
- string thumbUrl = 7;
- string mediaUrl = 8;
-}
-
-enum MediaType {
- Image = 0;
- Audio = 1;
- Video = 2;
- Text = 3;
- Code = 4;
- Raw = 5;
-}
-
-message ShareXResponse {
- oneof dstResult {
- string destination = 1;
- string error = 2;
- }
-}
-
-
-message SearchQuery {
- optional string queryText = 1;
- repeated Filter filters = 2;
-}
-
-message Filter {
- string key = 1;
- repeated string values = 2;
-}
-
-message PasskeyPayload {
-
-}
-
-message PasskeyRegistrationCreds{
+syntax = "proto3";
+
+option csharp_namespace = "Aoba.RPC";
+package aoba;
+import "google/protobuf/empty.proto";
+
+message Credentials{
+ string user = 1;
+ string password = 2;
+}
+
+
+
+
+message Jwt{
+ string token = 1;
+}
+
+message LoginResponse{
+ oneof result {
+ Jwt jwt = 1;
+ LoginError error = 2;
+ }
+}
+
+message LoginError{
+ string message = 1;
+}
+
+message PageFilter {
+ optional int32 page = 1;
+ optional int32 pageSize = 2;
+ optional string query = 3;
+}
+
+message Id {
+ string value = 1;
+}
+
+message MediaResponse {
+ oneof result {
+ MediaModel value = 1;
+ google.protobuf.Empty empty = 2;
+ }
+}
+
+message ListResponse {
+ repeated MediaModel items = 1;
+ Pagination pagination = 2;
+}
+
+message Pagination {
+ int32 page = 1;
+ int32 pageSize = 2;
+ int32 totalPages = 3;
+ int32 totalItems = 4;
+ optional string query = 5;
+}
+
+message UserResponse {
+ oneof userResult {
+ UserModel user = 1;
+ google.protobuf.Empty empty = 2;
+ }
+}
+
+message UserModel {
+ Id id = 1;
+ string username = 2;
+ string email = 3;
+ bool isAdmin = 4;
+}
+
+
+message MediaModel {
+ Id id = 1;
+ string fileName = 2;
+ MediaType mediaType = 3;
+ string ext = 4;
+ int32 viewCount = 5;
+ Id owner = 6;
+ string thumbUrl = 7;
+ string mediaUrl = 8;
+}
+
+enum MediaType {
+ Image = 0;
+ Audio = 1;
+ Video = 2;
+ Text = 3;
+ Code = 4;
+ Raw = 5;
+}
+
+message ShareXResponse {
+ oneof dstResult {
+ string destination = 1;
+ string error = 2;
+ }
+}
+
+
+message SearchQuery {
+ optional string queryText = 1;
+ repeated Filter filters = 2;
+}
+
+message Filter {
+ string key = 1;
+ repeated string values = 2;
+}
+
+message PasskeyPayload {
+
+}
+
+message PasskeyRegistrationCreds{
}
message PasskeyPublicKey{