Skip to content

Commit

Permalink
v0.6.1: added WrappedKey de/serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
Maurice-Mueller committed Apr 25, 2019
1 parent 6400c39 commit 343a07c
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -133,3 +133,4 @@ fabric.properties
dist/**/*
.rpt2_cache/**/*
docs/**/*
package-lock.json
4 changes: 2 additions & 2 deletions package.json
@@ -1,6 +1,6 @@
{
"name": "@esentri/js-crypto-wrapper",
"version": "0.6.0",
"version": "0.6.1",
"description": "a wrapper around WebCryptoAPI",
"keywords": [],
"main": "dist/crypto-wrapper.umd.js",
Expand Down Expand Up @@ -112,6 +112,6 @@
},
"dependencies": {
"@esentri/de-serializer": "^0.9.8",
"@esentri/transformer-functions": "^0.5.0"
"@esentri/transformer-functions": "^0.6.0"
}
}
1 change: 1 addition & 0 deletions src/crypto-wrapper.ts
Expand Up @@ -29,3 +29,4 @@ export {SymmetricKeySerialize} from './de-serializer/SymmetricKeySerialize'
export {SymmetricKeyDeserializer} from './de-serializer/SymmetricKeyDeserializer'
export {SymmetricKeySerialized, SymmetricKeySerializedKeyPath} from './de-serializer/SymmetricKeySerialized'
export {WrappedKey} from './WrappedKey'
export {WrappedKeySerialized, WrappedKeyDeserialize, WrappedKeySerialize} from './de-serializer/WrappedKeyDeSerialize'
28 changes: 28 additions & 0 deletions src/de-serializer/WrappedKeyDeSerialize.ts
@@ -0,0 +1,28 @@
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,
element.vector ? Uint8ArrayToBase64(element.vector.asArray()) : null))
}

export class WrappedKeySerialized {

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

constructor (base64: string, config: any, vectorBase64: string | null) {
this.base64 = base64
this.config = config
this.vectorBase64 = vectorBase64
}
}

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))
}
36 changes: 36 additions & 0 deletions test/de-serializer/WrappedKeyDeSerialize.test.ts
@@ -0,0 +1,36 @@
import {symKeyBase64} from '../testData/Keys'
import {InitializationVector, SymmetricKeyConfig, WrappedKey, WrappedKeyDeserialize, WrappedKeySerialize} from '../../src/crypto-wrapper'
import {Uint8ArrayToBase64} from '@esentri/transformer-functions'

describe('de-serialize WrappedKey', () => {

it('de-serialize WrappedKey (without InitializationVector)', done => {
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.vectorBase64).toBeNull()
WrappedKeyDeserialize(serializedWrappedKey).then(deserializedKey => {
expect(deserializedKey.base64).toEqual(wrappedKey.base64)
expect(deserializedKey.config).toEqual(wrappedKey.config)
expect(deserializedKey.vector).toBeNull()
done()
})
})
})

it('de-serialize WrappedKey (with InitializationVector)', done => {
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.vectorBase64).toEqual(Uint8ArrayToBase64(wrappedKey.vector!.asArray()))
WrappedKeyDeserialize(serializedWrappedKey).then(deserializedKey => {
expect(deserializedKey.base64).toEqual(wrappedKey.base64)
expect(deserializedKey.config).toEqual(wrappedKey.config)
expect(deserializedKey.vector!.asArray()).toEqual(wrappedKey.vector!.asArray())
done()
})
})
})
})
2 changes: 1 addition & 1 deletion test/testData/ArraysForEncryption.ts
Expand Up @@ -1115,4 +1115,4 @@ export const Array1000Byte = new Uint8Array([
// 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
// 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
// 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
//])
// ])
1 change: 0 additions & 1 deletion test/testData/Keys.ts
Expand Up @@ -5,4 +5,3 @@ export const publicKeyBase64 = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52n/
export const keyPairExtracted = new KeyPairExtracted(publicKeyBase64, PrivateKeyBase64)
export const symKeyBase64 = 'qOZueO5Jvzv1lP+8uWDCdNLusWXbCpDOKOjOxvCcRHE='
export const WrappedDefaultSymKeyBase64 = 'aMWQgYkhr8CoAdvpeKfNdFNom5AEKSFpOKVhAOqHCElI7RulkskBAQ2sNVlXsf+j072dRMlm8cqXSm3RIuqjdqvCgVTDMoBoLr2g/WS2Bn3Q01oKacqCBDvmudbYx18MTnNSprUpSrcKgbAI4zBoVw1JFq4KC8+Fo4xKnamBT/n3XA0CJLORUEnfPqYC7vfjOEwr2Q9ENksv0/L5Qm8ZNqLC96j5T/AmB9rwWb4vDzjbjpYlFxDGAxPI1VfN86c7Qfinnf3zDV+KURdeSl1dwo+vJeAlIXg/ffIi+YPD+azGLOB5ect1e8qP54Q+F3qX6jdFuFXUBPcvdtOwJ3wgaA=='

0 comments on commit 343a07c

Please sign in to comment.