@@ -2,7 +2,7 @@ import type { DeepPartial, FileSystem, PromiseDeconstructed } from './types';
22import type { PolykeyWorkerManagerInterface } from './workers/types' ;
33import type { TLSConfig } from './network/types' ;
44import type { SeedNodes } from './nodes/types' ;
5- import type { CertManagerChangeData , Key } from './keys/types' ;
5+ import type { Key } from './keys/types' ;
66import type { RecoveryCode , PrivateKey } from './keys/types' ;
77import type { PasswordMemLimit , PasswordOpsLimit } from './keys/types' ;
88import path from 'path' ;
@@ -99,7 +99,6 @@ interface PolykeyAgent extends CreateDestroyStartStop {}
9999 new errors . ErrorPolykeyAgentDestroyed ( ) ,
100100)
101101class PolykeyAgent {
102-
103102 /**
104103 * Create the Polykey Agent.
105104 *
@@ -321,8 +320,9 @@ class PolykeyAgent {
321320 sigchain =
322321 sigchain ??
323322 ( await Sigchain . createSigchain ( {
324- keyRing,
325323 db,
324+ keyRing,
325+ certManager,
326326 logger : logger . getChild ( Sigchain . name ) ,
327327 fresh,
328328 } ) ) ;
@@ -370,6 +370,7 @@ class PolykeyAgent {
370370 new NodeConnectionManager ( {
371371 keyRing,
372372 nodeGraph,
373+ certManager,
373374 tlsConfig,
374375 seedNodes : optionsDefaulted . seedNodes ,
375376 connectionFindConcurrencyLimit :
@@ -396,6 +397,7 @@ class PolykeyAgent {
396397 nodeConnectionManager,
397398 taskManager,
398399 gestaltGraph,
400+ certManager,
399401 logger : logger . getChild ( NodeManager . name ) ,
400402 } ) ;
401403 await nodeManager . start ( ) ;
@@ -611,6 +613,22 @@ class PolykeyAgent {
611613 this . rpcServerAgent . handleStream ( stream ) ;
612614 } ;
613615
616+ protected handleEventsCertManagerCertChange = async (
617+ evt : keysEvents . EventsCertManagerCertChange ,
618+ ) => {
619+ const data = evt . detail ;
620+ this . logger . info ( `${ KeyRing . name } change propagating` ) ;
621+ await this . status . updateStatusLive ( {
622+ nodeId : data . nodeId ,
623+ } ) ;
624+ const tlsConfig : TLSConfig = {
625+ keyPrivatePem : keysUtils . privateKeyToPEM ( data . keyPair . privateKey ) ,
626+ certChainPem : await this . certManager . getCertPEMsChainPEM ( ) ,
627+ } ;
628+ this . webSocketServerClient . setTlsConfig ( tlsConfig ) ;
629+ this . logger . info ( `${ KeyRing . name } change propagated` ) ;
630+ } ;
631+
614632 constructor ( {
615633 nodePath,
616634 status,
@@ -709,25 +727,10 @@ class PolykeyAgent {
709727 try {
710728 this . logger . info ( `Starting ${ this . constructor . name } ` ) ;
711729 // Register event handlers
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 ) ;
730+ this . certManager . addEventListener (
731+ keysEvents . EventsCertManagerCertChange . name ,
732+ this . handleEventsCertManagerCertChange ,
733+ ) ;
731734 await this . status . start ( { pid : process . pid } ) ;
732735 await this . schema . start ( { fresh } ) ;
733736 // Starting modules
@@ -818,7 +821,10 @@ class PolykeyAgent {
818821 this . logger . warn (
819822 `Failed Starting ${ this . constructor . name } with ${ e . message } ` ,
820823 ) ;
821- this . certManager . removeEventListener ( keysEvents . EventsCertManagerCertChange . name , handleCertChange ) ;
824+ this . certManager . removeEventListener (
825+ keysEvents . EventsCertManagerCertChange . name ,
826+ this . handleEventsCertManagerCertChange ,
827+ ) ;
822828 await this . status ?. beginStop ( { pid : process . pid } ) ;
823829 await this . taskManager ?. stopProcessing ( ) ;
824830 await this . taskManager ?. stopTasks ( ) ;
@@ -856,7 +862,10 @@ class PolykeyAgent {
856862 */
857863 public async stop ( ) {
858864 this . logger . info ( `Stopping ${ this . constructor . name } ` ) ;
859- this . certManager . removeEventListener ( keysEvents . EventsCertManagerCertChange . name , handleCertChange ) ;
865+ this . certManager . removeEventListener (
866+ keysEvents . EventsCertManagerCertChange . name ,
867+ this . handleEventsCertManagerCertChange ,
868+ ) ;
860869 await this . status . beginStop ( { pid : process . pid } ) ;
861870 await this . taskManager . stopProcessing ( ) ;
862871 await this . taskManager . stopTasks ( ) ;
0 commit comments