2019-12-03 15:19:08 +01:00
|
|
|
import debug from "debug";
|
2020-04-10 13:35:38 +02:00
|
|
|
import {DUMP_SESSION_KEYS} from './constants';
|
2020-04-14 15:10:48 +02:00
|
|
|
import { KeyPair } from "./@types/libp2p";
|
|
|
|
import { NoiseSession, SymmetricState } from "./@types/handshake";
|
2020-04-10 13:35:38 +02:00
|
|
|
|
2020-04-17 10:18:05 +02:00
|
|
|
export const logger = debug('libp2p:noise');
|
|
|
|
|
2020-04-10 13:35:38 +02:00
|
|
|
let keyLogger;
|
|
|
|
if(DUMP_SESSION_KEYS){
|
2020-04-17 10:22:13 +02:00
|
|
|
keyLogger = logger
|
2020-04-10 13:35:38 +02:00
|
|
|
}
|
2020-04-17 10:18:05 +02:00
|
|
|
else {
|
2020-04-23 08:10:41 +02:00
|
|
|
keyLogger = () => { /* do nothing */ }
|
2020-04-10 13:35:38 +02:00
|
|
|
}
|
|
|
|
|
2020-04-14 15:10:48 +02:00
|
|
|
export function logLocalStaticKeys(s: KeyPair): void {
|
|
|
|
keyLogger(`LOCAL_STATIC_PUBLIC_KEY ${s.publicKey.toString('hex')}`)
|
|
|
|
keyLogger(`LOCAL_STATIC_PRIVATE_KEY ${s.privateKey.toString('hex')}`)
|
|
|
|
}
|
|
|
|
|
|
|
|
export function logLocalEphemeralKeys(e: KeyPair|undefined): void {
|
|
|
|
if(e){
|
|
|
|
keyLogger(`LOCAL_PUBLIC_EPHEMERAL_KEY ${e.publicKey.toString('hex')}`)
|
|
|
|
keyLogger(`LOCAL_PRIVATE_EPHEMERAL_KEY ${e.privateKey.toString('hex')}`)
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
keyLogger('Missing local ephemeral keys.')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function logRemoteStaticKey(rs: Buffer): void {
|
2020-04-23 08:10:41 +02:00
|
|
|
keyLogger(`REMOTE_STATIC_PUBLIC_KEY ${rs.toString('hex')}`)
|
2020-04-14 15:10:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export function logRemoteEphemeralKey(re: Buffer): void {
|
2020-04-23 08:10:41 +02:00
|
|
|
keyLogger(`REMOTE_EPHEMERAL_PUBLIC_KEY ${re.toString('hex')}`)
|
2020-04-14 15:10:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export function logCipherState(session: NoiseSession): void {
|
|
|
|
if(session.cs1 && session.cs2){
|
|
|
|
keyLogger(`CIPHER_STATE_1 ${session.cs1.n} ${session.cs1.k.toString('hex')}`)
|
|
|
|
keyLogger(`CIPHER_STATE_2 ${session.cs2.n} ${session.cs2.k.toString('hex')}`)
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
keyLogger('Missing cipher state.')
|
|
|
|
}
|
|
|
|
}
|