Add serialization

This commit is contained in:
2024-09-09 22:48:09 +02:00
parent 5fa068776c
commit c49f3b84bf
4 changed files with 43 additions and 6 deletions
+10 -3
View File
@@ -1,8 +1,8 @@
import logger from 'log'
import SecretBox from './secret-box'
import {DHusage, ecdh} from './kdf'
import {pubkey_fromString, pubkey_toString, Usage} from './misc'
import * as consts from './const'
import * as misc from './misc.ts'
const log = logger('crypto:private-box')
@@ -39,7 +39,7 @@ export default class PrivateBox {
public async toString(): Promise<string> {
log.trace('toString')
const pubkey = await pubkey_toString(this.pubkey)
const pubkey = await PrivateBox.pubkey_toString(this.pubkey)
const box = this.box.toString()
return `${pubkey}.${box}`
}
@@ -49,11 +49,18 @@ export default class PrivateBox {
const parts = data.split('.')
if (parts.length < 2) return null
const pubkey = await pubkey_fromString(parts[0], Usage.ecdh)
const pubkey = await PrivateBox.pubkey_fromString(parts[0])
if (pubkey === null) return null
const box = SecretBox.fromString(parts.slice(1).join('.'))
if (box === null) return null
return new PrivateBox(pubkey, box)
}
public static pubkey_toString(pubkey: CryptoKey): Promise<string> {
return misc.pubkey_toString(pubkey)
}
public static pubkey_fromString(pubkey: string): Promise<CryptoKey | null> {
return misc.pubkey_fromString(pubkey, misc.Usage.ecdh)
}
}