breaking all the things (by replacing v1 with v2 formats)

This commit is contained in:
El RIDO 2019-05-03 20:51:01 +02:00
parent 5652a43d1d
commit ed676acac3
No known key found for this signature in database
GPG Key ID: 0F5C940A6BD81F92
2 changed files with 46 additions and 19 deletions

View File

@ -9,6 +9,9 @@
"id": { "id": {
"@type": "so:name" "@type": "so:name"
}, },
"pasteid": {
"@type": "so:name"
},
"parentid": { "parentid": {
"@type": "so:name" "@type": "so:name"
}, },

View File

@ -61,15 +61,17 @@ class Helper
128, 128,
'aes', 'aes',
'gcm', 'gcm',
'zlib' 'zlib',
), ),
'plaintext', 'plaintext',
0, 0,
0 0
), ),
'meta' => array( 'expire' => '5min' ), 'meta' => array(
'expire' => '5min',
),
'v' => 2, 'v' => 2,
'ct' => 'ME5JF/YBEijp2uYMzLZozbKtWc5wfy6R59NBb7SmRig=' 'ct' => 'ME5JF/YBEijp2uYMzLZozbKtWc5wfy6R59NBb7SmRig=',
); );
/** /**
@ -84,7 +86,7 @@ class Helper
* *
* @var array * @var array
*/ */
private static $comment = array( private static $commentV1 = array(
'data' => '{"iv":"Pd4pOKWkmDTT9uPwVwd5Ag","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"6nOCU3peNDclDDpFtJEBKA"}', 'data' => '{"iv":"Pd4pOKWkmDTT9uPwVwd5Ag","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"6nOCU3peNDclDDpFtJEBKA"}',
'meta' => array( 'meta' => array(
'nickname' => '{"iv":"76MkAtOGC4oFogX/aSMxRA","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"b6Ae/U1xJdsX/+lATud4sQ"}', 'nickname' => '{"iv":"76MkAtOGC4oFogX/aSMxRA","v":1,"iter":1000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"ZIUhFTliVz4","ct":"b6Ae/U1xJdsX/+lATud4sQ"}',
@ -113,23 +115,30 @@ class Helper
/** /**
* get example paste * get example paste
* *
* @param int $version
* @param array $meta
* @return array * @return array
*/ */
public static function getPaste($meta = array()) public static function getPaste($version = 2, $meta = array())
{ {
$example = self::getPasteWithAttachment($meta); $example = self::getPasteWithAttachment($version, $meta);
unset($example['attachment'], $example['attachmentname']); // v1 has the attachment stored in a separate property
if ($version === 1) {
unset($example['attachment'], $example['attachmentname']);
}
return $example; return $example;
} }
/** /**
* get example paste * get example paste
* *
* @param int $version
* @param array $meta
* @return array * @return array
*/ */
public static function getPasteWithAttachment($meta = array()) public static function getPasteWithAttachment($version = 2, $meta = array())
{ {
$example = self::$pasteV1; $example = $version === 1 ? self::$pasteV1 : self::$pasteV2;
$example['meta']['salt'] = ServerSalt::generate(); $example['meta']['salt'] = ServerSalt::generate();
$example['meta'] = array_merge($example['meta'], $meta); $example['meta'] = array_merge($example['meta'], $meta);
return $example; return $example;
@ -138,11 +147,13 @@ class Helper
/** /**
* get example paste * get example paste
* *
* @param int $version
* @param array $meta
* @return array * @return array
*/ */
public static function getPasteAsJson($meta = array()) public static function getPasteAsJson($version = 2, $meta = array())
{ {
$example = self::getPaste(); $example = self::getPaste($version);
// the JSON shouldn't contain the salt // the JSON shouldn't contain the salt
unset($example['meta']['salt']); unset($example['meta']['salt']);
if (count($meta)) { if (count($meta)) {
@ -166,27 +177,40 @@ class Helper
} }
/** /**
* get example comment * get example comment, as stored on server / returned to user
* *
* @param int $version
* @param array $meta
* @return array * @return array
*/ */
public static function getComment($meta = array()) public static function getComment($version = 2, $meta = array())
{ {
$example = self::$comment; $example = $version === 1 ? self::$commentV1 : self::getPaste($version);
if ($version === 2) {
$example['pasteid'] = $example['parentid'] = self::getPasteId();
$example['meta']['created'] = self::$commentV1['meta']['postdate'];
$example['meta']['icon'] = self::$commentV1['meta']['vizhash'];
unset($example['meta']['expire']);
}
$example['meta'] = array_merge($example['meta'], $meta); $example['meta'] = array_merge($example['meta'], $meta);
return $example; return $example;
} }
/** /**
* get example comment * get example comment, as received via POST by user
* *
* @param int $version
* @return array * @return array
*/ */
public static function getCommentPost($meta = array()) public static function getCommentPost($version = 2)
{ {
$example = self::getComment($meta); $example = self::getComment($version);
$example['nickname'] = $example['meta']['nickname']; if ($version === 1) {
unset($example['meta']['nickname']); $example['nickname'] = $example['meta']['nickname'];
unset($example['meta']['nickname']);
} else {
unset($example['meta']);
}
return $example; return $example;
} }