Skip to content

Commit

Permalink
v0.6.3: added more robust WrappedKey de/serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
Maurice-Mueller committed Apr 26, 2019
1 parent 9197440 commit 89e5138
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "@esentri/js-crypto-wrapper",
"version": "0.6.2",
"version": "0.6.3",
"description": "a wrapper around WebCryptoAPI",
"keywords": [],
"main": "dist/crypto-wrapper.umd.js",
Expand Down
16 changes: 10 additions & 6 deletions src/de-serializer/WrappedKeyDeSerialize.ts
@@ -1,19 +1,22 @@
import {Deserialize, Serialize} from '@esentri/de-serializer'
import {
Deserialize,
Serialize
} from '@esentri/de-serializer'
import {InitializationVector, WrappedKey} from '../crypto-wrapper'
import {Base64ToUint8Array, Uint8ArrayToBase64} from '@esentri/transformer-functions'

export const WrappedKeySerialize: Serialize = (element: WrappedKey): Promise<WrappedKeySerialized> => {
return Promise.resolve(new WrappedKeySerialized(element.base64, element.config,
return Promise.resolve(new WrappedKeySerialized(element.base64, JSON.stringify(element.config),
element.vector ? Uint8ArrayToBase64(element.vector.asArray()) : null))
}

export class WrappedKeySerialized {

public readonly base64: string
public readonly config: any
public readonly config: string
public readonly vectorBase64: string | null

constructor (base64: string, config: any, vectorBase64: string | null) {
constructor (base64: string, config: string, vectorBase64: string | null) {
this.base64 = base64
this.config = config
this.vectorBase64 = vectorBase64
Expand All @@ -23,6 +26,7 @@ export class WrappedKeySerialized {
export const WrappedKeyDeserialize: Deserialize<WrappedKey> = (element: WrappedKeySerialized): Promise<WrappedKey> => {
return Promise.resolve(
new WrappedKey(element.base64,
element.config,
element.vectorBase64 ? new InitializationVector(Base64ToUint8Array(element.vectorBase64)) : null))
JSON.parse(element.config),
element.vectorBase64 ? new InitializationVector(Base64ToUint8Array(element.vectorBase64)) : null)
)
}
4 changes: 2 additions & 2 deletions test/de-serializer/WrappedKeyDeSerialize.test.ts
Expand Up @@ -8,7 +8,7 @@ describe('de-serialize WrappedKey', () => {
let wrappedKey = new WrappedKey(symKeyBase64, SymmetricKeyConfig.DEFAULT)
WrappedKeySerialize(wrappedKey).then(serializedWrappedKey => {
expect(serializedWrappedKey.base64).toEqual(wrappedKey.base64)
expect(serializedWrappedKey.config).toEqual(wrappedKey.config)
expect(serializedWrappedKey.config).toEqual(JSON.stringify(wrappedKey.config))
expect(serializedWrappedKey.vectorBase64).toBeNull()
WrappedKeyDeserialize(serializedWrappedKey).then(deserializedKey => {
expect(deserializedKey.base64).toEqual(wrappedKey.base64)
Expand All @@ -23,7 +23,7 @@ describe('de-serialize WrappedKey', () => {
let wrappedKey = new WrappedKey(symKeyBase64, SymmetricKeyConfig.DEFAULT, InitializationVector.random())
WrappedKeySerialize(wrappedKey).then(serializedWrappedKey => {
expect(serializedWrappedKey.base64).toEqual(wrappedKey.base64)
expect(serializedWrappedKey.config).toEqual(wrappedKey.config)
expect(serializedWrappedKey.config).toEqual(JSON.stringify(wrappedKey.config))
expect(serializedWrappedKey.vectorBase64).toEqual(Uint8ArrayToBase64(wrappedKey.vector!.asArray()))
WrappedKeyDeserialize(serializedWrappedKey).then(deserializedKey => {
expect(deserializedKey.base64).toEqual(wrappedKey.base64)
Expand Down

0 comments on commit 89e5138

Please sign in to comment.