in device/core/src/sas_authentication_provider.ts [74:93]
static fromSharedAccessSignature(sharedAccessSignature: string): SharedAccessSignatureAuthenticationProvider {
if (!sharedAccessSignature) {
/*Codes_SRS_NODE_SAS_AUTHENTICATION_PROVIDER_16_005: [The `fromSharedAccessSignature` method shall throw a `ReferenceError` if the `sharedAccessSignature` argument is falsy.]*/
throw new ReferenceError('sharedAccessSignature cannot be \'' + sharedAccessSignature + '\'');
}
const sas: SharedAccessSignature = SharedAccessSignature.parse(sharedAccessSignature);
const decodedUri = decodeURIComponent(sas.sr);
const uriSegments = decodedUri.split('/');
const uriDeviceId = (uriSegments.length >= 3 && uriSegments[1] === 'devices') ? (uriSegments[2]) : null;
const uriModuleId = (uriSegments.length >= 5 && uriSegments[3] === 'modules') ? (uriSegments[4]) : null;
const credentials: TransportConfig = {
host: uriSegments[0],
deviceId: uriDeviceId,
moduleId: uriModuleId,
sharedAccessSignature: sharedAccessSignature
};
/*Codes_SRS_NODE_SAS_AUTHENTICATION_PROVIDER_16_006: [The `fromSharedAccessSignature` shall return a new `SharedAccessSignatureAuthenticationProvider` object initialized with the credentials parsed from the `sharedAccessSignature` argument.]*/
return new SharedAccessSignatureAuthenticationProvider(credentials);
}