Test secret stream generated code
This commit is contained in:
1 parent
df87dae376
commit
0c098e57db
13 files changed
+137
-39
No files matched your search
+2
-1
@@ -95,7 +95,8 @@ class FunctionDefinition(
|
||||
class ParameterDefinition(
|
||||
val parameterName: String,
|
||||
val parameterType: GeneralTypeDefinition,
|
||||
val modifiesReturn: Boolean = false,
|
||||
val modifiesReturnObjectSize: Boolean = false,
|
||||
val specificReturnModification : String? = null,
|
||||
val isActuallyAnOutputParam: Boolean = false,
|
||||
val isStateType: Boolean = false,
|
||||
val dropParameterFromDefinition: Boolean = false,
|
||||
|
||||
+1
-1
@@ -33,6 +33,6 @@ fun ClassDefinition.defineGenericHashFunctions() {
|
||||
specificJvmInitializer = "sodium.crypto_generichash_statebytes()"
|
||||
)
|
||||
+ParameterDefinition("key", TypeDefinition.ARRAY_OF_UBYTES)
|
||||
+ParameterDefinition("outlen", TypeDefinition.INT, modifiesReturn = true)
|
||||
+ParameterDefinition("outlen", TypeDefinition.INT, modifiesReturnObjectSize = true)
|
||||
}
|
||||
}
|
||||
+5
-4
@@ -1,7 +1,5 @@
|
||||
package com.ionspin.kotlin.crypto.generator.libsodium.definitions
|
||||
|
||||
import com.squareup.kotlinpoet.ClassName
|
||||
|
||||
/**
|
||||
* Created by Ugljesa Jovanovic (jovanovic.ugljesa@gmail.com) on 14/Aug/2020
|
||||
*/
|
||||
@@ -132,7 +130,8 @@ fun ClassDefinition.defineSecretStreamFunctions() {
|
||||
+ParameterDefinition(
|
||||
"m",
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE,
|
||||
modifiesReturn = true
|
||||
modifiesReturnObjectSize = true,
|
||||
specificReturnModification = "m.size + 17"
|
||||
)
|
||||
+ParameterDefinition(
|
||||
"ad",
|
||||
@@ -173,7 +172,8 @@ fun ClassDefinition.defineSecretStreamFunctions() {
|
||||
+ParameterDefinition(
|
||||
"c",
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE,
|
||||
modifiesReturn = true
|
||||
modifiesReturnObjectSize = true,
|
||||
specificReturnModification = "c.size - 17"
|
||||
)
|
||||
+ParameterDefinition(
|
||||
"ad",
|
||||
@@ -183,4 +183,5 @@ fun ClassDefinition.defineSecretStreamFunctions() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+12
-8
@@ -63,7 +63,7 @@ object JsLibsodiumGenerator {
|
||||
val methodBuilder = FunSpec.builder(methodDefinition.name)
|
||||
|
||||
var returnModifierFound = false
|
||||
var returnModifierName = ""
|
||||
var returnModifierValue = ""
|
||||
var actualReturnType: TypeName = DYNAMIC
|
||||
var actualReturnTypeFound: Boolean = false
|
||||
for (paramDefinition in methodDefinition.parameterList) {
|
||||
@@ -74,18 +74,22 @@ object JsLibsodiumGenerator {
|
||||
methodBuilder.addParameter(parameterSpec.build())
|
||||
}
|
||||
}
|
||||
if (paramDefinition.modifiesReturn) {
|
||||
if (paramDefinition.modifiesReturnObjectSize) {
|
||||
if (returnModifierFound == true) {
|
||||
throw RuntimeException("Return modifier already found")
|
||||
}
|
||||
returnModifierFound = true
|
||||
when (paramDefinition.parameterType) {
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE -> {
|
||||
returnModifierName = "${paramDefinition.parameterName}.size"
|
||||
}
|
||||
TypeDefinition.INT -> {
|
||||
returnModifierName = paramDefinition.parameterName
|
||||
if (paramDefinition.specificReturnModification == null) {
|
||||
when (paramDefinition.parameterType) {
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE -> {
|
||||
returnModifierValue = "${paramDefinition.parameterName}.size"
|
||||
}
|
||||
TypeDefinition.INT -> {
|
||||
returnModifierValue = paramDefinition.parameterName
|
||||
}
|
||||
}
|
||||
} else {
|
||||
returnModifierValue = paramDefinition.specificReturnModification!!
|
||||
}
|
||||
}
|
||||
if (paramDefinition.isActuallyAnOutputParam) {
|
||||
|
||||
+14
-9
@@ -55,7 +55,7 @@ object JvmLibsodiumGenerator {
|
||||
val methodBuilder = FunSpec.builder(methodDefinition.name)
|
||||
methodBuilder.modifiers += MultiplatformModifier.ACTUAL.modifierList
|
||||
var returnModifierFound = false
|
||||
var returnModifierName = ""
|
||||
var returnModifierValue = ""
|
||||
lateinit var actualReturnParameterDefinition: ParameterDefinition
|
||||
var actualReturnTypeFound: Boolean = false
|
||||
for (paramDefinition in methodDefinition.parameterList) {
|
||||
@@ -69,18 +69,23 @@ object JvmLibsodiumGenerator {
|
||||
methodBuilder.addParameter(parameterSpec.build())
|
||||
}
|
||||
}
|
||||
if (paramDefinition.modifiesReturn) {
|
||||
if (paramDefinition.modifiesReturnObjectSize) {
|
||||
if (returnModifierFound == true) {
|
||||
throw RuntimeException("Return modifier already found")
|
||||
}
|
||||
returnModifierFound = true
|
||||
when (paramDefinition.parameterType) {
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE -> {
|
||||
returnModifierName = "${paramDefinition.parameterName}.size"
|
||||
}
|
||||
TypeDefinition.INT -> {
|
||||
returnModifierName = paramDefinition.parameterName
|
||||
|
||||
if (paramDefinition.specificReturnModification == null) {
|
||||
when (paramDefinition.parameterType) {
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE -> {
|
||||
returnModifierValue = "${paramDefinition.parameterName}.size"
|
||||
}
|
||||
TypeDefinition.INT -> {
|
||||
returnModifierValue = paramDefinition.parameterName
|
||||
}
|
||||
}
|
||||
} else {
|
||||
returnModifierValue = paramDefinition.specificReturnModification!!
|
||||
}
|
||||
}
|
||||
if (paramDefinition.isActuallyAnOutputParam) {
|
||||
@@ -92,7 +97,7 @@ object JvmLibsodiumGenerator {
|
||||
if (returnModifierFound) {
|
||||
createOutputParam(
|
||||
actualReturnParameterDefinition,
|
||||
returnModifierName,
|
||||
returnModifierValue,
|
||||
methodBuilder
|
||||
)
|
||||
} else {
|
||||
|
||||
+13
-9
@@ -70,7 +70,7 @@ object NativeLibsodiumGenerator {
|
||||
val methodBuilder = FunSpec.builder(methodDefinition.name)
|
||||
methodBuilder.modifiers += MultiplatformModifier.ACTUAL.modifierList
|
||||
var returnModifierFound = false
|
||||
var returnModifierName = ""
|
||||
var returnModifierValue = ""
|
||||
lateinit var actualReturnParameterDefinition: ParameterDefinition
|
||||
var actualReturnTypeFound: Boolean = false
|
||||
for (paramDefinition in methodDefinition.parameterList) {
|
||||
@@ -84,18 +84,22 @@ object NativeLibsodiumGenerator {
|
||||
methodBuilder.addParameter(parameterSpec.build())
|
||||
}
|
||||
}
|
||||
if (paramDefinition.modifiesReturn) {
|
||||
if (paramDefinition.modifiesReturnObjectSize) {
|
||||
if (returnModifierFound == true) {
|
||||
throw RuntimeException("Return modifier already found")
|
||||
}
|
||||
returnModifierFound = true
|
||||
when (paramDefinition.parameterType) {
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE -> {
|
||||
returnModifierName = "${paramDefinition.parameterName}.size"
|
||||
}
|
||||
TypeDefinition.INT -> {
|
||||
returnModifierName = paramDefinition.parameterName
|
||||
if (paramDefinition.specificReturnModification == null) {
|
||||
when (paramDefinition.parameterType) {
|
||||
TypeDefinition.ARRAY_OF_UBYTES_LONG_SIZE -> {
|
||||
returnModifierValue = "${paramDefinition.parameterName}.size"
|
||||
}
|
||||
TypeDefinition.INT -> {
|
||||
returnModifierValue = paramDefinition.parameterName
|
||||
}
|
||||
}
|
||||
} else {
|
||||
returnModifierValue = paramDefinition.specificReturnModification!!
|
||||
}
|
||||
|
||||
}
|
||||
@@ -106,7 +110,7 @@ object NativeLibsodiumGenerator {
|
||||
}
|
||||
if (actualReturnTypeFound) {
|
||||
if (returnModifierFound) {
|
||||
createOutputParam(actualReturnParameterDefinition, returnModifierName, methodBuilder)
|
||||
createOutputParam(actualReturnParameterDefinition, returnModifierValue, methodBuilder)
|
||||
} else {
|
||||
if (methodDefinition.outputLengthWhenArray == -1) {
|
||||
throw RuntimeException("Function definition lacks a way to define output array length, function ${methodDefinition.name}")
|
||||
|
||||
Reference in new issue
Block a user