mirror of
https://github.com/espressif/openthread.git
synced 2026-08-14 06:37:46 +00:00
Add PSKc generation feature support (#1165)
* implement PBKDF2 using AES-CMAC-PRF-128 * generate PSKc using PBKDF2, AES-CMAC-PRF-128 * expand "dataset pskc" cli to input PSKc source (passphrase, network name, extended panid)
This commit is contained in:
@@ -406,6 +406,7 @@ networkname
|
||||
panid
|
||||
pending
|
||||
pendingtimestamp
|
||||
pskc
|
||||
userdata
|
||||
Done
|
||||
```
|
||||
@@ -645,6 +646,24 @@ Set pending timestamp.
|
||||
Done
|
||||
```
|
||||
|
||||
### dataset pskc \[pskc\]
|
||||
|
||||
Set pskc with hex format.
|
||||
|
||||
```bash
|
||||
> dataset pskc 67c0c203aa0b042bfb5381c47aef4d9e
|
||||
Done
|
||||
```
|
||||
|
||||
### dataset pskc \[passphrase\] \[networkname\] \[extpanid\]
|
||||
|
||||
Generate pskc from passphrase, network name and extended panid.
|
||||
|
||||
```bash
|
||||
> dataset pskc OpenThreadPassphrase OpenThread dead00beef00cafe
|
||||
Done
|
||||
```
|
||||
|
||||
### dataset userdata \[size\] \[data\]
|
||||
|
||||
Set user specific data for the command.
|
||||
|
||||
+14
-6
@@ -666,17 +666,25 @@ exit:
|
||||
ThreadError Dataset::ProcessPSKc(otInstance *aInstance, int argc, char *argv[])
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
uint8_t extPanId[OT_EXT_PAN_ID_SIZE];
|
||||
uint16_t length;
|
||||
|
||||
VerifyOrExit(argc > 0, error = kThreadError_Parse);
|
||||
VerifyOrExit((argc == 1) || (argc == 3), error = kThreadError_Parse);
|
||||
|
||||
length = static_cast<uint16_t>((strlen(argv[0]) + 1) / 2);
|
||||
VerifyOrExit(length <= OT_PSKC_MAX_SIZE, error = kThreadError_NoBufs);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[0], sDataset.mPSKc.m8 + OT_PSKC_MAX_SIZE - length, length)
|
||||
== length, error = kThreadError_Parse);
|
||||
if (argc == 1)
|
||||
{
|
||||
length = static_cast<uint16_t>((strlen(argv[0]) + 1) / 2);
|
||||
VerifyOrExit(length <= OT_PSKC_MAX_SIZE, error = kThreadError_NoBufs);
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[0], sDataset.mPSKc.m8 + OT_PSKC_MAX_SIZE - length, length) == length,
|
||||
error = kThreadError_Parse);
|
||||
}
|
||||
else
|
||||
{
|
||||
VerifyOrExit(Interpreter::Hex2Bin(argv[2], extPanId, sizeof(extPanId)) >= 0, error = kThreadError_Parse);
|
||||
SuccessOrExit(error = otGeneratePSKc(aInstance, argv[0], argv[1], extPanId, sDataset.mPSKc.m8));
|
||||
}
|
||||
|
||||
sDataset.mIsPSKcSet = true;
|
||||
(void)aInstance;
|
||||
|
||||
exit:
|
||||
return error;
|
||||
|
||||
Reference in New Issue
Block a user