js: fixing errors found by testing

--

* Key.js: Error code for wrong parameter in createKey should be
  "PARAM_WRONG"

* Helpers.js: The property openpgpjs-like Objects were checked for in
  toKeyIdArray was not defined.

* src/permittedOperations.js: updated more expectations and assumptions
  for the native API
This commit is contained in:
Maximilian Krambach 2018-05-04 12:56:59 +02:00
parent c755287ba8
commit cf075846fb
4 changed files with 66 additions and 23 deletions

View File

@ -48,7 +48,7 @@ export function toKeyIdArray(input){
if (input[i] instanceof GPGME_Key){
fpr = input[i].fingerprint;
} else if (input[i].hasOwnProperty('primaryKey') &&
input[i].primaryKey.hasOwnProperty(getFingerprint)){
input[i].primaryKey.hasOwnProperty('getFingerprint')){
fpr = input[i].primaryKey.getFingerprint();
}
if (isFingerprint(fpr) === true){

View File

@ -35,13 +35,15 @@ import { Connection } from './Connection';
export function createKey(fingerprint, parent){
if (!isFingerprint(fingerprint)){
return gpgme_error('KEY_INVALID');
return gpgme_error('PARAM_WRONG');
}
if ( parent instanceof Connection){
return new GPGME_Key(fingerprint, parent);
} else if ( parent.hasOwnProperty('connection') &&
parent.connection instanceof Connection){
return new GPGME_Key(fingerprint, parent.connection);
} else {
return gpgme_error('PARAM_WRONG');
}
}

View File

@ -122,55 +122,96 @@ export const permittedOperations = {
type: ['plaintext'],
data: ['data'],
params: ['base64', 'mime'],
infos: [] // pending. Info about signatures and validity
//signature: [{Key Fingerprint, valid boolean}]
infos: [] // TODO pending. Info about signatures and validity
//{
//signatures: [{
//Key : <String>Fingerprint,
//valid: <Boolean>
// }]
}
},
/**
keyinfo: { // querying the Key's information.
required: ['fingerprint'],
anser: {
/** TBD: querying the Key's information (keyinfo)
TBD name: {
required: {
'fingerprint': {
allowed: ['string']
},
},
answer: {
type: ['TBD'],
data: [],
params: ['hasSecret','isRevoked','isExpired','armored',
'timestamp','expires','pubkey_algo'],
infos: ['subkeys', 'userIds']
// {'hasSecret': <Boolean>,
// 'isRevoked': <Boolean>,
// 'isExpired': <Boolean>,
// 'armored': <String>, // armored public Key block
// 'timestamp': <Number>, //
// 'expires': <Number>,
// 'pubkey_algo': TBD // TBD (optional?),
// 'userIds': Array<String>,
// 'subkeys': Array<String> Fingerprints of Subkeys
// }
}*/
/**
listkeys:{
optional: ['with-secret', 'pattern'],
required: {};
optional: {
'with-secret':{
allowed: ['boolean']
},{
'pattern': {
allowed: ['string']
}
},
answer: {
type: ['TBD'], //Array of fingerprints?
infos: ['TBD'] //the property with infos
type: ['TBD'],
infos: ['TBD']
// keys: Array<String> Fingerprints representing the results
},
*/
/**
importkey: {
required: ['keyarmored'],
required: {
'keyarmored': {
allowed: ['string']
}
},
answer: {
type: ['TBD'],
infos: [''], // for each key if import was a success, if it was an update
infos: ['TBD'],
// for each key if import was a success,
// and if it was an update of preexisting key
}
},
*/
/**
deletekey: {
required: ['fingerprint'],
pinentry: true,
required: {
'fingerprint': {
allowed: ['string'],
// array_allowed: TBD Allow several Keys to be deleted at once?
},
optional: {
'TBD' //Flag to delete secret Key ?
}
answer: {
type ['TBD'],
infos: [''] //success:true? in gpgme, an error NO_ERROR is returned
infos: ['']
// TBD (optional) Some kind of 'ok' if delete was successful.
}
}
*/
/**
*get armored secret different treatment from keyinfo!
*/
/**
* TBD key modification requests?
*TBD get armored secret different treatment from keyinfo!
* TBD key modification?
* encryptsign: TBD
* verify: TBD
*/
}

View File

@ -109,7 +109,7 @@ function unittests (){
});
});
describe('toKeyIdArray() (converting input to fingerprint', function(){
describe('toKeyIdArray() (converting input to fingerprint)', function(){
it('Correct fingerprint string', function(){
let test0 = toKeyIdArray(hp.validFingerprint);