-
Notifications
You must be signed in to change notification settings - Fork 255
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WebAuthn] Add WebAuthn API #6311
Conversation
Public API ChangedPlease follow the ACR process for the changed API below. |
namespace Tizen.Security.WebAuthn | ||
{ | ||
/// <summary> | ||
/// Authenticator extension |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please ensure that description ends with a period. In C# API period is almost always there, one exception is single word enum value description (if all of them in that enum are very short).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
/// <summary> | ||
/// Authenticator extension | ||
/// </summary> | ||
/// <since_tizen> 9 </since_tizen> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see in this PR since_tizen with values 4, 7, 9. It should be 12 in all newly added items.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
/// Extension Identifier defined in the following registry. | ||
/// https://www.iana.org/assignments/webauthn/webauthn.xhtml#webauthn-extension-ids |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be best to use links in the text like this:
/// Extension Identifier defined in the following registry. | |
/// https://www.iana.org/assignments/webauthn/webauthn.xhtml#webauthn-extension-ids | |
/// Extension Identifier defined in the <a href="https://www.iana.org/assignments/webauthn/webauthn.xhtml#webauthn-extension-ids">WebAuthn Extension Identifiers registry</a>. |
but for now lets just replace period with a colon ("registry. https..." -> "registry: https...")
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
/// Initializes a new instance of the <see cref="AuthenticationSelCri"/> class. | ||
/// </summary> | ||
/// <since_tizen> 9 </since_tizen> | ||
/// <param name="attachment">Authenticator attachment modality</param> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please use periods in params as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
@@ -0,0 +1,25 @@ | |||
--- | |||
uid: Tizen.Security.WebAuthm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo, uid must match the fully qualified namespace exactly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
remarks: *content | ||
--- | ||
## Overview | ||
It provides an Authenticator cclass containing methods for creating public key-based credentials |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
/// Initializes a new instance of the <see cref="PubkeyCredCreationOptions"/> class. | ||
/// </summary> | ||
/// /// <since_tizen> 9 </since_tizen> | ||
/// <param name="rp">Contains a name and an identifier for the Relying Party responsible for the request</param> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that's a lot of parameters, if they are optional they maybe specify default values in the method signature so the user will be able to skip those that are not used,
see https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments?redirectedfrom=MSDN#optional-arguments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. I made the same change to PubkeyCredRequestOptions.
Public API ChangedPlease follow the ACR process for the changed API below. Internal API ChangedAdded: 4, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()
|
Public API ChangedPlease follow the ACR process for the changed API below. Internal API ChangedAdded: 19, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()
|
1 similar comment
Public API ChangedPlease follow the ACR process for the changed API below. Internal API ChangedAdded: 19, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()
|
/// <since_tizen> 12 </since_tizen> | ||
/// <remarks>This method must be called before other methods are called.</remarks> | ||
/// <feature>http://tizen.org/feature/security.webauthn</feature> | ||
/// <param name="apiVersionNumber">API version number to set. Use <see cref="ApiVersionNumber"/> as an input.</param> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what does this mean? User should take the ApiVersionNumber and pass it here all the time? I would prefer if things were automatic. Who provides the value of the property? Is there sensible default value?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed it so that API version is now set automatically.
/// <summary> | ||
/// Initializes a new instance of the <see cref="HybridLinkedData"/> class. | ||
/// </summary> | ||
/// <param name="contactId">CBOR:"1".</param> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what are those CBORs? Could you provide something more for those parameters and properties below? or maybe it would be clear if I read the referenced specification?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a link to the CBOR format specification. It should be much clearer now.
src/Tizen.Security.WebAuthn/Tizen.Security.WebAuthn/Authenticator.cs
Outdated
Show resolved
Hide resolved
/// <feature>http://tizen.org/feature/security.webauthn</feature> | ||
/// <exception cref="NotSupportedException">The required feature is not supported.</exception> | ||
/// <exception cref="InvalidOperationException">Not allowed in the current context.</exception> | ||
public static void Cancel() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In C# CancellationTokens are used to cancel ongoing operation. Maybe there is no need for that yet, and adding that mechanism can be considered in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that the idea to convert the methods into async ones has been abandoned for now, an explicit Cancel call is needed.
/// </feature> | ||
/// <param name="clientData">UTF-8 encoded JSON serialization of the client data.</param> | ||
/// <param name="options">Specifies the desired attributes of the to-be-created public key credential.</param> | ||
/// <param name="callbacks">The callback functions to be invoked.</param> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
callbacks from native API are usually replaced with C# solutions like async/Task or events. This case is a little more complicated because there are data that should be optionally provided back to the process. Maybe a class like UserFeedbackProvider could be designed which the app developer would implement to instead, but there is not much of a benefit so let's keep this McCallbacks parameter and additionally provide the result PubkeyCredentialAttestation in a Task.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately, the possibility of some callbacks being called multiple times makes it very difficult to convert this API into something that uses standard C# async programming. For now, we've decided to leave it as is.
src/Tizen.Security.WebAuthn/Tizen.Security.WebAuthn/McCallbacks.cs
Outdated
Show resolved
Hide resolved
/// <summary> | ||
/// JSON-compatible serialization of client data. | ||
/// </summary> | ||
public byte[] ClientDataJson { get; init; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there are few fields mentioning JSON but they are still byte[], I would expect maybe not a JSON parsed object but maybe a string there, a valid Json string should fit a C# string, maybe you don't want to deal with invalid data, encoding, etc and prefer to expose raw data?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The native client is already equipped with a json parser, so any additional invalid data detection etc. on the C# side would be redundant. Given the fact that the documentation contains a link to the specification containing instructions on how the JSON should be serialized, I think it should be acceptable to simply expose the raw byte array to the user.
Public API ChangedPlease follow the ACR process for the changed API below. Internal API ChangedAdded: 19, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()
|
Public API ChangedPlease follow the ACR process for the changed API below. Internal API ChangedAdded: 19, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()
|
--- | ||
## Overview | ||
It provides an [Authenticator](xref:Tizen.Security.WebAuthn.Authenticator) class containing methods for creating public key-based credentials | ||
([Authenticator.MakeCredential()](xref:Tizen.Security.WebAuthn.Authenticator.MakeCredential(Tizen.Security.WebAuthn.ClientData,Tizen.Security.WebAuthn.PubkeyCredCreationOptions,Tizen.Security.WebAuthn.McCallbacks))) and using them ([Authenticator.GetAssertion()](xref:Tizen.Security.WebAuthn.Authenticator.GetAssertion(Tizen.Security.WebAuthn.ClientData,Tizen.Security.WebAuthn.PubkeyCredRequestOptions,Tizen.Security.WebAuthn.GaCallbacks))). Both these operations are performed asynchronously. Callbacks passed as arguments are used to notify about the progress |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please update the type name of last parameters
/// If the request does not need to display a QR code | ||
/// then this callback function won't be invoked. | ||
/// </param> | ||
/// <param name="responseCallback">Callback function for getting the final response. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please break the line - the text should start on a new line
/// * - proxy issues, | ||
/// * - reached the limit of credentials stored by the authenticator. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please remove those *
before -
, on in lines 51-52, 54-55
Public API ChangedPlease follow the ACR process for the changed API below. Internal API ChangedAdded: 19, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.BaseComponents.View,System.String,Tizen.NUI.DragAndDrop/DragAndDropEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Void Tizen.NUI.DragAndDrop::AddListener(Tizen.NUI.Window,System.String,Tizen.NUI.DragAndDrop/DragAndDropWindowEventHandler)
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Collections.Generic.Dictionary`2<System.String,System.String> Tizen.NUI.DragData::DataMap
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.String[] Tizen.NUI.DragEvent::MimeTypes()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockStateChangedEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLock Tizen.System.PowerLockStateChangedEventArgs::PowerLockType()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerLockState Tizen.System.PowerLockStateChangedEventArgs::PowerLockState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateChangeRequestEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.Int32 Tizen.System.PowerStateChangeRequestEventArgs::Retval()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateChangeRequestEventArgs::PowerState()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::NextState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerState Tizen.System.PowerStateWaitEventArgs::PrevState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerStateWaitEventArgs::TransitionReason()
+ /// <since_tizen>10</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientStateWaitEventArgs
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ System.UInt64 Tizen.System.PowerTransientStateWaitEventArgs::WaitCallbackId()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransientState Tizen.System.PowerTransientStateWaitEventArgs::TransientState()
+ /// <since_tizen>none</since_tizen
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ Tizen.System.PowerTransitionReason Tizen.System.PowerTransientStateWaitEventArgs::TransitionReason()
|
Create the C# API module for WebAuthn and provide initial Interop code
Provide the signatures and documentation for the public API of the WebAuthn module and create internal helpers needed for data marshalling
- fix typos - add periods in summaries and params descriptions - change since_tizen value to 12 - move library file definitions to Interop.Libwebauthn.cs
Co-authored-by: Piotr Szydełko <[email protected]>
- API version is now set automatically on the first call. - Remove abbreviations from class names.
Public API ChangedPlease follow the ACR process for the changed API below. |
[WebAuthn] Add WebAuthn module and public API Provide the implementation and documentation for the public API of the WebAuthn module implementing the passkey functionality. Co-authored-by: Piotr Szydełko <[email protected]>
[WebAuthn] Add WebAuthn module and public API Provide the implementation and documentation for the public API of the WebAuthn module implementing the passkey functionality. Co-authored-by: Piotr Szydełko <[email protected]>
Description of Change
Add C# API for Web Authentication including public API, interop and documentation.
API Changes