Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
matrix-org
Olm
Commits
4057f594
Commit
4057f594
authored
Apr 08, 2019
by
manuroe
Browse files
OLMKit: SAS: Added macLongKdf support
(cherry picked from commit 934d516eb35c488ee197e1bab78a4c81e3c8241d)
parent
5de295da
Changes
3
Hide whitespace changes
Inline
Side-by-side
xcode/OLMKit/OLMSAS.h
View file @
4057f594
...
@@ -52,7 +52,18 @@ NS_ASSUME_NONNULL_BEGIN
...
@@ -52,7 +52,18 @@ NS_ASSUME_NONNULL_BEGIN
@param error the error if any.
@param error the error if any.
@return the MAC.
@return the MAC.
*/
*/
-
(
NSString
*
)
calculateMac
:(
NSString
*
)
input
info
:(
NSString
*
)
info
error
:(
NSError
*
_Nullable
*
)
error
;
// TODO: NSError?
-
(
NSString
*
)
calculateMac
:(
NSString
*
)
input
info
:(
NSString
*
)
info
error
:(
NSError
*
_Nullable
*
)
error
;
/**
Generate a message authentication code (MAC) based on the shared secret.
For compatibility with an old version of olm.js.
@param input the message to produce the authentication code for.
@param info extra information to mix in when generating the MAC, as per the Matrix spec.
@param error the error if any.
@return the MAC.
*/
-
(
NSString
*
)
calculateMacLongKdf
:(
NSString
*
)
input
info
:(
NSString
*
)
info
error
:(
NSError
*
_Nullable
*
)
error
;
@end
@end
...
...
xcode/OLMKit/OLMSAS.m
View file @
4057f594
...
@@ -137,4 +137,38 @@
...
@@ -137,4 +137,38 @@
return
mac
;
return
mac
;
}
}
-
(
NSString
*
)
calculateMacLongKdf
:(
NSString
*
)
input
info
:(
NSString
*
)
info
error
:(
NSError
*
__autoreleasing
_Nullable
*
)
error
{
NSMutableData
*
inputData
=
[
input
dataUsingEncoding
:
NSUTF8StringEncoding
].
mutableCopy
;
NSData
*
infoData
=
[
info
dataUsingEncoding
:
NSUTF8StringEncoding
];
size_t
macLength
=
olm_sas_mac_length
(
olmSAS
);
NSMutableData
*
macData
=
[
NSMutableData
dataWithLength
:
macLength
];
if
(
!
macData
)
{
return
nil
;
}
size_t
result
=
olm_sas_calculate_mac_long_kdf
(
olmSAS
,
inputData
.
mutableBytes
,
inputData
.
length
,
infoData
.
bytes
,
infoData
.
length
,
macData
.
mutableBytes
,
macLength
);
if
(
result
==
olm_error
())
{
const
char
*
olm_error
=
olm_sas_last_error
(
olmSAS
);
NSLog
(
@"[OLMSAS] calculateMacLongKdf: olm_sas_calculate_mac error: %s"
,
olm_error
);
NSString
*
errorString
=
[
NSString
stringWithUTF8String
:
olm_error
];
if
(
error
&&
olm_error
&&
errorString
)
{
*
error
=
[
NSError
errorWithDomain
:
OLMErrorDomain
code:
0
userInfo:
@{
NSLocalizedDescriptionKey:
errorString
,
NSLocalizedFailureReasonErrorKey:
[
NSString
stringWithFormat
:
@"olm_sas_calculate_mac_long_kdf error: %@"
,
errorString
]
}];
}
return
nil
;
}
NSString
*
mac
=
[[
NSString
alloc
]
initWithData
:
macData
encoding
:
NSUTF8StringEncoding
];
return
mac
;
}
@end
@end
xcode/OLMKitTests/OLMKitSASTests.m
View file @
4057f594
...
@@ -66,4 +66,21 @@
...
@@ -66,4 +66,21 @@
XCTAssertNil
(
bobError
);
XCTAssertNil
(
bobError
);
}
}
-
(
void
)
testMACLongKdfsMatch
{
[
alice
setTheirPublicKey
:
bob
.
publicKey
];
[
bob
setTheirPublicKey
:
alice
.
publicKey
];
NSString
*
string
=
@"test"
;
NSString
*
info
=
@"MAC"
;
NSError
*
aliceError
,
*
bobError
;
XCTAssertEqualObjects
([
alice
calculateMacLongKdf
:
string
info
:
info
error
:&
aliceError
],
[
bob
calculateMacLongKdf
:
string
info
:
info
error
:&
bobError
]);
XCTAssertNotEqualObjects
([
alice
calculateMacLongKdf
:
string
info
:
info
error
:&
aliceError
],
[
bob
calculateMac
:
string
info
:
info
error
:&
bobError
]);
XCTAssertNil
(
aliceError
);
XCTAssertNil
(
bobError
);
}
@end
@end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment