1313
1414const neon = require ( "./index.node" ) ;
1515import type {
16+ CallbackCredentialHolderInterface ,
1617 CallbackSignerInterface ,
1718 IdentityAssertionBuilderInterface ,
1819 IdentityAssertionSignerInterface ,
20+ SignerPayload ,
1921} from "./types" ;
2022
2123export class IdentityAssertionBuilder
@@ -24,7 +26,7 @@ export class IdentityAssertionBuilder
2426 constructor ( private _builder : IdentityAssertionBuilderInterface ) { }
2527
2628 static async identityBuilderForCredentialHolder (
27- credentialHolder : CallbackSignerInterface ,
29+ credentialHolder : CallbackCredentialHolderInterface ,
2830 ) : Promise < IdentityAssertionBuilder > {
2931 const builder = neon . identityBuilderForCredentialHolder (
3032 credentialHolder . signer ( ) ,
@@ -71,3 +73,47 @@ export class IdentityAssertionSigner
7173 return this . _signer ;
7274 }
7375}
76+
77+ export class CallbackCredentialHolder
78+ implements CallbackCredentialHolderInterface
79+ {
80+ constructor (
81+ private callbackCredentialHolder : CallbackCredentialHolderInterface ,
82+ ) { }
83+
84+ signer ( ) : CallbackCredentialHolderInterface {
85+ return this . callbackCredentialHolder ;
86+ }
87+
88+ static newCallbackCredentialHolder (
89+ reserveSize : number ,
90+ sigType : string ,
91+ callback : ( signerPayload : SignerPayload ) => Promise < Buffer > ,
92+ ) {
93+ const credentialHolder = neon . newCallbackCredentialHolder (
94+ reserveSize ,
95+ sigType ,
96+ callback ,
97+ ) ;
98+ return new CallbackCredentialHolder ( credentialHolder ) ;
99+ }
100+
101+ async sign ( payload : SignerPayload ) : Promise < Buffer > {
102+ return neon . callbackSignerSignPayload . call (
103+ this . callbackCredentialHolder ,
104+ payload ,
105+ ) ;
106+ }
107+
108+ reserveSize ( ) : number {
109+ return neon . callbackCredentialHolderReserveSize . call (
110+ this . callbackCredentialHolder ,
111+ ) ;
112+ }
113+
114+ sigType ( ) : string {
115+ return neon . callbackCredentialHolderSigType . call (
116+ this . callbackCredentialHolder ,
117+ ) ;
118+ }
119+ }
0 commit comments