import time
import os
import sys
+import json
try:
import security
return None
-def version_match(tp, protover):
+def version_match(tp, protover, verbose=False):
try:
response = tp.send_data('proto-ver', protover)
- if response != protover:
- return False
- return True
- except RuntimeError as e:
+
+ if verbose:
+ print("proto-ver response : ", response)
+
+ # First assume this to be a simple version string
+ if response.lower() == protover.lower():
+ return True
+
+ # Else interpret this as JSON structure containing
+ # information with versions and capabilities of both
+ # provisioning service and application
+ info = json.loads(response)
+ if info['prov']['ver'].lower() == protover.lower():
+ return True
+
+ return False
+ except Exception as e:
on_except(e)
return None
try:
message = prov.config_apply_config_request(sec)
response = tp.send_data('prov-config', message)
- return (prov.config_set_config_response(sec, response) == 0)
+ return (prov.config_apply_config_response(sec, response) == 0)
except RuntimeError as e:
on_except(e)
return None
parser.add_argument("--sec_ver", dest='secver', type=int,
help="Security scheme version", default=1)
parser.add_argument("--proto_ver", dest='protover', type=str,
- help="Protocol version", default='V0.1')
+ help="Protocol version", default='')
parser.add_argument("--pop", dest='pop', type=str,
help="Proof of possession", default='')
parser.add_argument("-v","--verbose", help="increase output verbosity", action="store_true")
args = parser.parse_args()
- print("==== Esp_Prov Version: " + args.protover + " ====")
+ if args.protover != '':
+ print("==== Esp_Prov Version: " + args.protover + " ====")
obj_security = get_security(args.secver, args.pop, args.verbose)
if obj_security is None:
print("---- Invalid provisioning mode ----")
exit(2)
- print("\n==== Verifying protocol version ====")
- if not version_match(obj_transport, args.protover):
- print("---- Error in protocol version matching ----")
- exit(3)
- print("==== Verified protocol version successfully ====")
+ if args.protover != '':
+ print("\n==== Verifying protocol version ====")
+ if not version_match(obj_transport, args.protover, args.verbose):
+ print("---- Error in protocol version matching ----")
+ exit(3)
+ print("==== Verified protocol version successfully ====")
print("\n==== Starting Session ====")
if not establish_session(obj_transport, obj_security):