PASSWORD = 1 << 0
};
-void unpack(const RawBuffer &packed,
- int &scheme,
- RawBuffer &data,
- RawBuffer &iv,
- RawBuffer &tag)
-{
- MessageBuffer buffer;
- buffer.Push(RawBuffer(packed));
-
- buffer.Deserialize(scheme);
-
- if (scheme == EncryptionScheme::PASSWORD) {
- buffer.Deserialize(data, iv, tag);
- } else {
- buffer.Deserialize(data);
- }
-}
-
RawBuffer unpackData(const RawBuffer &packed)
{
MessageBuffer buffer;
RawBuffer id;
RawBuffer iv;
RawBuffer tag;
- unpack(token.data, scheme, id, iv, tag);
-
- if (scheme & EncryptionScheme::PASSWORD && pass.empty()) {
- ThrowErr(Exc::Crypto::AuthenticationFailed,
- "This token is protected with password and none passed");
- } else if (!(scheme & EncryptionScheme::PASSWORD) && !pass.empty()) {
- ThrowErr(Exc::Crypto::AuthenticationFailed,
- "This token is not protected with password but passed one");
- }
+ unpack(token.data, pass, scheme, id, iv, tag);
if (token.dataType.isKeyPrivate() || token.dataType.isKeyPublic())
return make<AKey>(scheme, std::move(id), Pwd(pass, iv, tag), token.dataType);
}
}
+void Store::unpack(const RawBuffer &packed,
+ const Password& password,
+ int &scheme,
+ RawBuffer &data,
+ RawBuffer &iv,
+ RawBuffer &tag)
+{
+ MessageBuffer buffer;
+ buffer.Push(RawBuffer(packed));
+
+ buffer.Deserialize(scheme);
+
+ if (scheme == EncryptionScheme::PASSWORD) {
+ buffer.Deserialize(data, iv, tag);
+ } else {
+ buffer.Deserialize(data);
+ }
+
+ if (scheme & EncryptionScheme::PASSWORD && password.empty()) {
+ ThrowErr(Exc::Crypto::AuthenticationFailed,
+ "This token is protected with password and none passed");
+ } else if (!(scheme & EncryptionScheme::PASSWORD) && !password.empty()) {
+ ThrowErr(Exc::Crypto::AuthenticationFailed,
+ "This token is not protected with password but passed one");
+ }
+}
+
} // namespace TZ
} // namespace Crypto
} // namespace CKM