Skip to content
forked from bittoko/tecdsa

Generate, manage, and use ECDSA identities in Motoko

License

Notifications You must be signed in to change notification settings

ALLiDoizCode/tecdsa

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tecdsa

Install

mops add tecdsa

Usage

import { Manager; SECP256K1 = { CURVE; ID = { DFX_TEST_KEY } }  } "../../../src";
import { toBlob } "mo:base/Principal";
import { encodeUtf8 } "mo:base/Text";
import { print } "mo:base/Debug";
import State "state";

actor {
  
  stable let state = State.init();

  let identity_manager = Manager.Manager( state.manager_state );

  public shared func generate_new_identity(): async ?(Nat, [Text]) {
    switch( await* identity_manager.fill_next_slot({curve=CURVE; name=DFX_TEST_KEY}) ){
      case( #err _ ) null;
      case( #ok ret ) ?ret
    }
  };

  public shared query func get_principal(id: Nat): async Principal {
    let identity = identity_manager.get_slot( id );
    identity.get_principal()
  };

  public shared query func get_public_key(id: Nat): async [Nat8] {
    let identity = identity_manager.get_slot( id );
    identity.public_key
  };

  public shared func sign_message(id: Nat): async ?Blob {
    let identity = identity_manager.get_slot( id );
    let data = encodeUtf8("Hello world");
    switch( await* identity.sign( data ) ){
      case( #ok signature ) ?signature;
      case( #err msg ){
        print(debug_show(#err(msg)));
        null
      }
    }
  };

};

About

Generate, manage, and use ECDSA identities in Motoko

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Motoko 50.0%
  • Modelica 50.0%