Class DefaultCouponCodeCipherTextGenerationStrategy
java.lang.Object
de.hybris.platform.couponservices.couponcodegeneration.impl.AbstractCouponCodeGenerationStrategy
de.hybris.platform.couponservices.couponcodegeneration.impl.DefaultCouponCodeCipherTextGenerationStrategy
- All Implemented Interfaces:
CouponCodeCipherTextGenerationStrategy,org.springframework.beans.factory.InitializingBean
public class DefaultCouponCodeCipherTextGenerationStrategy
extends AbstractCouponCodeGenerationStrategy
implements CouponCodeCipherTextGenerationStrategy, org.springframework.beans.factory.InitializingBean
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected voidcheckLength(int length) checks that the given length is supported (2,4,6,8,12,16,20,24,28,32).protected voidcheckLength(String clearText) checks that the given clearText is of allowed length (such thatclearText.getBytes().length <= 16))protected final StringconstructCipherText(MultiCodeCouponModel coupon, int[] cipherTextInput) constructs the ciphertext based on the given input byte array.protected byte[]decodeSignature(MultiCodeCouponModel coupon) decodes the coupon.signature viaBase64.decode(String).protected byte[]encrypt(MultiCodeCouponModel coupon, String clearText) encrypts the given cleartext using the signature defined on the coupon.generateCipherText(MultiCodeCouponModel coupon, String clearText, int length) returns the generated cipher-text part of the coupon code for the given clearText with the given lengthprotected CiphergetCipher(MultiCodeCouponModel coupon) protected ConfigurationServicevoidsetConfigurationService(ConfigurationService configurationService) voidsetLengthToIntMapping(Map<Integer, Integer> lengthToIntMapping) This mapping defines how many inputintvalues are needed for a givenlengthof cipher-text.protected int[]transform(byte[] encryptedData, int length) transforms the given input of 16-byte array into an array of ints of specified length.Methods inherited from class de.hybris.platform.couponservices.couponcodegeneration.impl.AbstractCouponCodeGenerationStrategy
createIntFromTwoCharactersString, createTwoCharactersFromByte, pickCharacter, pickInt
-
Constructor Details
-
DefaultCouponCodeCipherTextGenerationStrategy
public DefaultCouponCodeCipherTextGenerationStrategy()
-
-
Method Details
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean
-
generateCipherText
Description copied from interface:CouponCodeCipherTextGenerationStrategyreturns the generated cipher-text part of the coupon code for the given clearText with the given length- Specified by:
generateCipherTextin interfaceCouponCodeCipherTextGenerationStrategy
-
encrypt
encrypts the given cleartext using the signature defined on the coupon. -
constructCipherText
constructs the ciphertext based on the given input byte array. -
transform
protected int[] transform(byte[] encryptedData, int length) transforms the given input of 16-byte array into an array of ints of specified length. Each of the resulting ints is composed of three (unsigned) bytes (using the lower 24 bits of the int). -
getCipher
- Throws:
NoSuchAlgorithmException
-
decodeSignature
decodes the coupon.signature viaBase64.decode(String). -
checkLength
protected void checkLength(int length) checks that the given length is supported (2,4,6,8,12,16,20,24,28,32). -
checkLength
checks that the given clearText is of allowed length (such thatclearText.getBytes().length <= 16)) -
getConfigurationService
-
setConfigurationService
-
getLengthToIntMapping
-
setLengthToIntMapping
This mapping defines how many inputintvalues are needed for a givenlengthof cipher-text. For each 2 characters of ciphertext one input int is needed. Only the lower three bytes of an int are used. Therefore, the default mapping is:4 characters -> 2 bytes -> 1 int 6 characters -> 3 bytes -> 1 int 8 characters -> 4 bytes -> 2 ints 12 characters -> 6 bytes -> 2 ints 16 characters -> 8 bytes -> 3 ints 20 characters -> 10 bytes -> 4 ints 28 characters -> 14 bytes -> 5 ints 32 characters -> 16 bytes -> 6 ints
-