Skip to content

Commit 6db683a

Browse files
author
Alex Wilson
committed
PUBAPI-1146 Divorce wanted between *_KEY_ID env vars and keyId actually sent to server
1 parent 2c3fb79 commit 6db683a

File tree

6 files changed

+24
-27
lines changed

6 files changed

+24
-27
lines changed

bin/sdc-chmod

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,10 @@ if (require.main === module) {
8989

9090
opts.log = log;
9191

92-
var identity = (opts.user) ?
93-
util.format('%s/users/%s', opts.account, opts.user):
94-
opts.account;
95-
9692
opts.sign = auth.cliSigner({
9793
keyId: opts.keyId,
98-
user: identity
94+
user: opts.account,
95+
subuser: opts.user
9996
});
10097

10198
var resource = opts._args[1];

bin/sdc-info

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,10 @@ if (require.main === module) {
7070
process.exit(1);
7171
}
7272

73-
var identity = (opts.user) ?
74-
util.format('%s/users/%s', opts.account, opts.user):
75-
opts.account;
76-
7773
opts.sign = auth.cliSigner({
7874
keyId: opts.keyId,
79-
user: identity
75+
user: opts.account,
76+
subuser: opts.user
8077
});
8178

8279
var cloudapi = new CloudAPI(opts);

lib/cli_common.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ url.name = 'url';
1818
// --- Globals
1919

2020
var KV_RE = new RegExp('^([^=]+)=(.*)$');
21-
var SSH_KEY_ID_RE = /^[0-9a-f]{2}(?:\:[0-9a-f]{2}){15}$/i;
21+
var SSH_HEX_KEY_ID_RE = /^(MD5:)?[0-9a-f]{2}(?:\:[0-9a-f]{2}){15}$/i;
22+
/*JSSTYLED*/
23+
var SSH_BASE64_KEY_ID_RE = /^[A-Z0-9]+:[-A-Za-z0-9+\/=]+$/;
2224
var URL_RE = '^https?\://.+';
2325

2426
var DeprecatedOptions = {
@@ -281,7 +283,8 @@ module.exports = {
281283
'Either --keyId or (env) SDC_KEY_ID must be specified');
282284
}
283285

284-
if (!parsed.keyId.match(SSH_KEY_ID_RE)) {
286+
if (!parsed.keyId.match(SSH_HEX_KEY_ID_RE) &&
287+
!parsed.keyId.match(SSH_BASE64_KEY_ID_RE)) {
285288
usage(usageStr, 1,
286289
'--keyId or (env) SDC_KEY_ID must be a valid SSH key ID');
287290
}
@@ -327,14 +330,10 @@ module.exports = {
327330
parsed.user = process.env.SDC_USER;
328331
}
329332

330-
var identity = (parsed.user) ?
331-
format('%s/users/%s', parsed.account, parsed.user):
332-
parsed.account;
333-
334-
335333
parsed.sign = smartdc.cliSigner({
336334
keyId: parsed.keyId,
337-
user: identity
335+
user: parsed.account,
336+
subuser: parsed.user
338337
});
339338

340339
return callback(parsed);

lib/cloudapi.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,12 @@ function _signRequest(opts, cb) {
138138
return (cb(null));
139139
}
140140

141+
var ident = obj.user;
142+
if (obj.subuser !== undefined)
143+
ident = sprintf('%s/users/%s', obj.user, obj.subuser);
144+
141145
opts.headers.authorization = sprintf(SIGNATURE,
142-
obj.user,
146+
ident,
143147
obj.keyId,
144148
obj.algorithm,
145149
obj.signature);

lib/shared.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ var smartdc = require('../lib/cloudapi'),
1212
CloudAPI = smartdc.CloudAPI;
1313

1414

15-
var SSH_KEY_ID_RE = /^[0-9a-f]{2}(?:\:[0-9a-f]{2}){15}$/i;
15+
var SSH_HEX_KEY_ID_RE = /^(MD5:)?[0-9a-f]{2}(?:\:[0-9a-f]{2}){15}$/i;
16+
/*JSSTYLED*/
17+
var SSH_BASE64_KEY_ID_RE = /^[A-Z0-9]+:[-A-Za-z0-9+\/=]+$/;
1618
var URL_RE = '^https?\://.+';
1719

1820

@@ -109,7 +111,8 @@ function checkRequiredOptions(opts, args, callback) {
109111
'Either --key or (env) SDC_KEY_ID must be specified'));
110112
}
111113

112-
if (!opts.keyId.match(SSH_KEY_ID_RE)) {
114+
if (!opts.keyId.match(SSH_HEX_KEY_ID_RE) &&
115+
!opts.keyId.match(SSH_BASE64_KEY_ID_RE)) {
113116
return callback(new Error(
114117
'--keyId or (env) SDC_KEY_ID must be a valid SSH key ID'));
115118
}
@@ -143,13 +146,10 @@ function checkRequiredOptions(opts, args, callback) {
143146
'--url or (env) SDC_URL must be a valid URL'));
144147
}
145148

146-
var identity = (opts.user) ?
147-
util.format('%s/users/%s', opts.account, opts.user):
148-
opts.account;
149-
150149
opts.sign = auth.cliSigner({
151150
keyId: opts.keyId,
152-
user: identity
151+
user: opts.account,
152+
subuser: opts.user
153153
});
154154

155155
if (opts.role) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"restify": "2.8.5",
2525
"bunyan": "1.3.4",
2626
"clone": "0.1.6",
27-
"smartdc-auth": "1.0.4",
27+
"smartdc-auth": "2.0.0",
2828
"cmdln": "3.2.1",
2929
"dashdash": "1.7.3",
3030
"vasync": "1.6.2"

0 commit comments

Comments
 (0)