@@ -31,11 +31,11 @@ import Discovery from './discovery/Discovery';
3131import SessionManager from './sessions/SessionManager' ;
3232import IdentitiesManager from './identities/IdentitiesManager' ;
3333import { providers } from './identities' ;
34- import { EventBus , captureRejectionSymbol } from './events' ;
3534import config from './config' ;
3635import * as errors from './errors' ;
3736import * as utils from './utils' ;
3837import * as keysUtils from './keys/utils' ;
38+ import * as keysEvents from './keys/events' ;
3939import * as nodesUtils from './nodes/utils' ;
4040import * as nodesEvents from './nodes/events' ;
4141import * as workersUtils from './workers/utils' ;
@@ -99,15 +99,6 @@ interface PolykeyAgent extends CreateDestroyStartStop {}
9999 new errors . ErrorPolykeyAgentDestroyed ( ) ,
100100)
101101class PolykeyAgent {
102- /**
103- * Event symbols
104- * These represent event topics
105- */
106- public static readonly eventSymbols = {
107- [ CertManager . name ] : Symbol ( CertManager . name ) ,
108- } as {
109- readonly CertManager : unique symbol ;
110- } ;
111102
112103 /**
113104 * Create the Polykey Agent.
@@ -240,9 +231,6 @@ class PolykeyAgent {
240231 const dbPath = path . join ( statePath , config . paths . dbBase ) ;
241232 const keysPath = path . join ( statePath , config . paths . keysBase ) ;
242233 const vaultsPath = path . join ( statePath , config . paths . vaultsBase ) ;
243- const events = new EventBus ( {
244- captureRejections : true ,
245- } ) ;
246234 let pkAgentProm : PromiseDeconstructed < PolykeyAgent > | undefined ;
247235 try {
248236 status =
@@ -322,8 +310,6 @@ class PolykeyAgent {
322310 taskManager,
323311 certDuration : optionsDefaulted . keys . certDuration ,
324312 certRenewLeadTime : optionsDefaulted . keys . certRenewLeadTime ,
325- changeCallback : async ( data ) =>
326- events . emitAsync ( PolykeyAgent . eventSymbols . CertManager , data ) ,
327313 logger : logger . getChild ( CertManager . name ) ,
328314 fresh,
329315 } ) ) ;
@@ -574,7 +560,6 @@ class PolykeyAgent {
574560 rpcServerClient,
575561 webSocketServerClient,
576562 rpcServerAgent,
577- events,
578563 fs,
579564 logger,
580565 } ) ;
@@ -614,7 +599,6 @@ class PolykeyAgent {
614599 public readonly vaultManager : VaultManager ;
615600 public readonly notificationsManager : NotificationsManager ;
616601 public readonly sessionManager : SessionManager ;
617- public readonly events : EventBus ;
618602 public readonly fs : FileSystem ;
619603 public readonly logger : Logger ;
620604 public readonly rpcServerClient : RPCServer ;
@@ -649,7 +633,6 @@ class PolykeyAgent {
649633 rpcServerClient,
650634 webSocketServerClient,
651635 rpcServerAgent,
652- events,
653636 fs,
654637 logger,
655638 } : {
@@ -674,7 +657,6 @@ class PolykeyAgent {
674657 rpcServerClient : RPCServer ;
675658 webSocketServerClient : WebSocketServer ;
676659 rpcServerAgent : RPCServer ;
677- events : EventBus ;
678660 fs : FileSystem ;
679661 logger : Logger ;
680662 } ) {
@@ -700,7 +682,6 @@ class PolykeyAgent {
700682 this . rpcServerClient = rpcServerClient ;
701683 this . webSocketServerClient = webSocketServerClient ;
702684 this . rpcServerAgent = rpcServerAgent ;
703- this . events = events ;
704685 this . fs = fs ;
705686 }
706687
@@ -727,43 +708,26 @@ class PolykeyAgent {
727708 } ) ;
728709 try {
729710 this . logger . info ( `Starting ${ this . constructor . name } ` ) ;
730- // Set up error handling for event handlers
731- this . events [ captureRejectionSymbol ] = ( err , event : symbol ) => {
732- let msg = `EventBus error for ${ event . toString ( ) } ` ;
733- if ( err instanceof errors . ErrorPolykey ) {
734- msg += `: ${ err . name } : ${ err . description } ` ;
735- if ( err . message !== '' ) {
736- msg += ` - ${ err . message } ` ;
737- }
738- } else {
739- msg += `: ${ err . name } ` ;
740- if ( err . message !== '' ) {
741- msg += `: ${ err . message } ` ;
742- }
743- }
744- this . logger . error ( msg ) ;
745- throw err ;
746- } ;
747711 // Register event handlers
748- this . events . on (
749- PolykeyAgent . eventSymbols . CertManager ,
750- async ( data : CertManagerChangeData ) => {
751- this . logger . info ( `${ KeyRing . name } change propagating` ) ;
752- await this . status . updateStatusLive ( {
753- nodeId : data . nodeId ,
754- } ) ;
755- await this . nodeManager . resetBuckets ( ) ;
756- // Update the sigchain
757- await this . sigchain . onKeyRingChange ( ) ;
758- const tlsConfig : TLSConfig = {
759- keyPrivatePem : keysUtils . privateKeyToPEM ( data . keyPair . privateKey ) ,
760- certChainPem : await this . certManager . getCertPEMsChainPEM ( ) ,
761- } ;
762- this . webSocketServerClient . setTlsConfig ( tlsConfig ) ;
763- this . nodeConnectionManager . updateTlsConfig ( tlsConfig ) ;
764- this . logger . info ( `${ KeyRing . name } change propagated` ) ;
765- } ,
766- ) ;
712+ // FIXME: we need to handle the EventCertManagerCertChanged event to update the status
713+ const handleCertChange = async ( evt : keysEvents . EventsCertManagerCertChange ) => {
714+ const data = evt . detail
715+ this . logger . info ( `${ KeyRing . name } change propagating` ) ;
716+ await this . status . updateStatusLive ( {
717+ nodeId : data . nodeId ,
718+ } ) ;
719+ await this . nodeManager . resetBuckets ( ) ;
720+ // Update the sigchain
721+ await this . sigchain . onKeyRingChange ( ) ;
722+ const tlsConfig : TLSConfig = {
723+ keyPrivatePem : keysUtils . privateKeyToPEM ( data . keyPair . privateKey ) ,
724+ certChainPem : await this . certManager . getCertPEMsChainPEM ( ) ,
725+ } ;
726+ this . webSocketServerClient . setTlsConfig ( tlsConfig ) ;
727+ this . nodeConnectionManager . updateTlsConfig ( tlsConfig ) ;
728+ this . logger . info ( `${ KeyRing . name } change propagated` ) ;
729+ }
730+ this . certManager . addEventListener ( keysEvents . EventsCertManagerCertChange . name , handleCertChange ) ;
767731 await this . status . start ( { pid : process . pid } ) ;
768732 await this . schema . start ( { fresh } ) ;
769733 // Starting modules
@@ -854,7 +818,7 @@ class PolykeyAgent {
854818 this . logger . warn (
855819 `Failed Starting ${ this . constructor . name } with ${ e . message } ` ,
856820 ) ;
857- this . events . removeAllListeners ( ) ;
821+ this . certManager . removeEventListener ( keysEvents . EventsCertManagerCertChange . name , handleCertChange ) ;
858822 await this . status ?. beginStop ( { pid : process . pid } ) ;
859823 await this . taskManager ?. stopProcessing ( ) ;
860824 await this . taskManager ?. stopTasks ( ) ;
@@ -892,7 +856,7 @@ class PolykeyAgent {
892856 */
893857 public async stop ( ) {
894858 this . logger . info ( `Stopping ${ this . constructor . name } ` ) ;
895- this . events . removeAllListeners ( ) ;
859+ this . certManager . removeEventListener ( keysEvents . EventsCertManagerCertChange . name , handleCertChange ) ;
896860 await this . status . beginStop ( { pid : process . pid } ) ;
897861 await this . taskManager . stopProcessing ( ) ;
898862 await this . taskManager . stopTasks ( ) ;
0 commit comments