Mobile SDK

The MIRACL Trust service provides a Designated Verifier Signature (DVS) scheme for digital signing that you can integrate directly into your mobile applications through the platform’s mobile SDKs.

As a preliminary step, you must set up the Mobile SDK as described in MIRACL Trust Android SDK, MIRACL Trust iOS SDK and MIRACL Trust Flutter Plugin.

# Generate Signature

To generate a signature for signing a document, use the sign method as follows:

miraclTrust.sign(
        hashedMessage,
        user,
        pinProvider,
        result -> {
            if (result instanceof MIRACLSuccess) {
               Signature signature =
                       ((MIRACLSuccess<Signature, SigningException>) result).getValue();
            } else {
                MIRACLError<Signature, SigningException> error =
                        (MIRACLError<Signature, SigningException>) result;
                // Cannot sign the message/document due to an error.
            }
        }
);
miraclTrust.sign(
    hashedMessage,
    user,
    pinProvider
) { result ->
    when (result) {
        is MIRACLSuccess -> {
            val signature = result.value
        }
        is MIRACLError -> {
            val error = result.value
            // Cannot sign the message/document due to an error.
        }
    }
}
MIRACLTrust.getInstance().sign(
    message: <#Message hash#>,
    user: <#Already registered user#>,
    didRequestSigningPinHandler: { pinProcessor in
        // Here the user provides their current signing PIN.

        pinProcessor(<#Provide your signing user PIN here#>)
    }, completionHandler: { signature, error in
        // The signature object can be sent to the server for verification.
    }
)
[[MIRACLTrust getInstance] signWithMessage: <#Message hash#>
                                      user: <#Already registered signing user#>
                     signingSessionDetails: <#Signing session details, if used, othewise nil#>
               didRequestSigningPinHandler: ^(void (^ _Nonnull pinProcessor)(NSString * _Nullable)) {
                    // Here the user provides their current signing PIN.

                    pinProcessor(<#Provide your signing user PIN here#>);
                } completionHandler: ^(Signature * _Nullable signature, NSError * _Nullable error) {
                    // The signature object can be sent to the server for verification.
                }];
try {
  final signingResult = await sdk.sign(user, message, pin);
} on SigningException catch(e) {
  // Handle the exception here.
}

# Verify Signature

The signature must be verified on the back end. For more information, see Digital Signatures.