MBS Xojo Encryption Kit 1.0

CommonCryptorMB class:

Class CommonCryptorMB
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Algorithm as CommonCryptoMB.CryptoAlgorithm, Options as Integer, key as MemoryBlock, iv as MemoryBlock = nil) // Create a cryptographic context. // // op Defines the basic operation: Encrypt or Decrypt. // alg Defines the algorithm. // options A word of flags defining options. can be 0, kCCOptionPKCS7Padding and/or kCCOptionECBMode. // key Raw key material. Must be appropriate in length for the selected operation and algorithm. Some algorithms provide for varying key lengths. // iv Initialization vector, optional. Used by block ciphers when Cipher Block Chaining (CBC) mode is enabled. If present, must be the same length as the selected algorithm's block size. // If CBC mode is selected (by the absence of the kCCOptionECBMode bit in the options flags) and no // IV is present, a NULL (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or if a stream cipher algorithm is selected. // Can raise exception with error returns are kCCParamError and kCCMemoryFailure. End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Algorithm as CommonCryptoMB.CryptoAlgorithm, Options as Integer, key as Xojo.Core.MemoryBlock, iv as xojo.core.MemoryBlock = nil) // Create a cryptographic context. // // op Defines the basic operation: Encrypt or Decrypt. // alg Defines the algorithm. // options A word of flags defining options. can be 0, kCCOptionPKCS7Padding and/or kCCOptionECBMode. // key Raw key material. Must be appropriate in length for the selected operation and algorithm. Some algorithms provide for varying key lengths. // iv Initialization vector, optional. Used by block ciphers when Cipher Block Chaining (CBC) mode is enabled. If present, must be the same length as the selected algorithm's block size. // If CBC mode is selected (by the absence of the kCCOptionECBMode bit in the options flags) and no // IV is present, a NULL (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or if a stream cipher algorithm is selected. // Can raise exception with error returns are kCCParamError and kCCMemoryFailure. End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Algorithm as CommonCryptoMB.CryptoAlgorithm, Options as Integer, key as string, iv as MemoryBlock = nil) // Create a cryptographic context. // // op Defines the basic operation: Encrypt or Decrypt. // alg Defines the algorithm. // options A word of flags defining options. can be 0, kCCOptionPKCS7Padding and/or kCCOptionECBMode. // key Raw key material. Must be appropriate in length for the selected operation and algorithm. Some algorithms provide for varying key lengths. // iv Initialization vector, optional. Used by block ciphers when Cipher Block Chaining (CBC) mode is enabled. If present, must be the same length as the selected algorithm's block size. // If CBC mode is selected (by the absence of the kCCOptionECBMode bit in the options flags) and no // IV is present, a NULL (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or if a stream cipher algorithm is selected. // Can raise exception with error returns are kCCParamError and kCCMemoryFailure. // convert string in current encoding to MemoryBlock End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Algorithm as CommonCryptoMB.CryptoAlgorithm, Options as Integer, key as text, iv as xojo.core.MemoryBlock = nil) // Create a cryptographic context. // // op Defines the basic operation: Encrypt or Decrypt. // alg Defines the algorithm. // options A word of flags defining options. can be 0, kCCOptionPKCS7Padding and/or kCCOptionECBMode. // key Raw key material. Must be appropriate in length for the selected operation and algorithm. Some algorithms provide for varying key lengths. // iv Initialization vector, optional. Used by block ciphers when Cipher Block Chaining (CBC) mode is enabled. If present, must be the same length as the selected algorithm's block size. // If CBC mode is selected (by the absence of the kCCOptionECBMode bit in the options flags) and no // IV is present, a NULL (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or if a stream cipher algorithm is selected. // Can raise exception with error returns are kCCParamError and kCCMemoryFailure. End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Mode as CommonCryptoMB.CryptoMode, Algorithm as CommonCryptoMB.CryptoAlgorithm, Padding as CommonCryptoMB.CryptoPadding, key as MemoryBlock, Tweak as Memoryblock = nil, iv as MemoryBlock = nil, NumRounds as Integer = 0, Options as Integer = 0) // Create a cryptographic context. // Operation Defines the basic operation: Encrypt or Decrypt. // mode Specifies the cipher mode to use for operations. // Algorithm Defines the algorithm. // padding Specifies the padding to use. // iv Initialization vector, optional. Used by block ciphers with the following modes: // // Cipher Block Chaining (CBC) // Cipher Feedback (CFB and CFB8) // Output Feedback (OFB) // Counter (CTR) // // If present, must be the same length as the selected // algorithm's block size. If no IV is present, a NULL // (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or // if a stream cipher algorithm is selected. // key Raw key material, length keyLength bytes. Key length must be appropriate // for the selected operation and algorithm. Some algorithms provide for varying key lengths. // tweak Raw key material, length keyLength bytes. Used for the tweak key in XEX-based Tweaked CodeBook (XTS) mode. // Length of tweak key material must be appropriate for the selected operation and algorithm. Some // algorithms provide for varying key lengths. For XTS this is the same length as the encryption key. // // numRounds The number of rounds of the cipher to use. 0 uses the default. // options A word of flags defining options. See discussion // for the CCModeOptions type. // // Can raise exception for with errors kCCParamError and kCCMemoryFailure. End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Mode as CommonCryptoMB.CryptoMode, Algorithm as CommonCryptoMB.CryptoAlgorithm, Padding as CommonCryptoMB.CryptoPadding, key as Xojo.Core.MemoryBlock, Tweak as xojo.core.Memoryblock = nil, iv as xojo.core.MemoryBlock = nil, NumRounds as Integer = 0, Options as Integer = 0) // Create a cryptographic context. // Operation Defines the basic operation: Encrypt or Decrypt. // mode Specifies the cipher mode to use for operations. // Algorithm Defines the algorithm. // padding Specifies the padding to use. // iv Initialization vector, optional. Used by block ciphers with the following modes: // // Cipher Block Chaining (CBC) // Cipher Feedback (CFB and CFB8) // Output Feedback (OFB) // Counter (CTR) // // If present, must be the same length as the selected // algorithm's block size. If no IV is present, a NULL // (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or // if a stream cipher algorithm is selected. // key Raw key material, length keyLength bytes. Key length must be appropriate // for the selected operation and algorithm. Some algorithms provide for varying key lengths. // tweak Raw key material, length keyLength bytes. Used for the tweak key in XEX-based Tweaked CodeBook (XTS) mode. // Length of tweak key material must be appropriate for the selected operation and algorithm. Some // algorithms provide for varying key lengths. For XTS this is the same length as the encryption key. // // numRounds The number of rounds of the cipher to use. 0 uses the default. // options A word of flags defining options. See discussion // for the CCModeOptions type. // // Can raise exception for with errors kCCParamError and kCCMemoryFailure. End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Mode as CommonCryptoMB.CryptoMode, Algorithm as CommonCryptoMB.CryptoAlgorithm, Padding as CommonCryptoMB.CryptoPadding, key as string, Tweak as Memoryblock = nil, iv as MemoryBlock = nil, NumRounds as Integer = 0, Options as Integer = 0) // Create a cryptographic context. // Operation Defines the basic operation: Encrypt or Decrypt. // mode Specifies the cipher mode to use for operations. // Algorithm Defines the algorithm. // padding Specifies the padding to use. // iv Initialization vector, optional. Used by block ciphers with the following modes: // // Cipher Block Chaining (CBC) // Cipher Feedback (CFB and CFB8) // Output Feedback (OFB) // Counter (CTR) // // If present, must be the same length as the selected // algorithm's block size. If no IV is present, a NULL // (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or // if a stream cipher algorithm is selected. // key Raw key material, length keyLength bytes. Key length must be appropriate // for the selected operation and algorithm. Some algorithms provide for varying key lengths. // tweak Raw key material, length keyLength bytes. Used for the tweak key in XEX-based Tweaked CodeBook (XTS) mode. // Length of tweak key material must be appropriate for the selected operation and algorithm. Some // algorithms provide for varying key lengths. For XTS this is the same length as the encryption key. // // numRounds The number of rounds of the cipher to use. 0 uses the default. // options A word of flags defining options. See discussion // for the CCModeOptions type. // // Can raise exception for with errors kCCParamError and kCCMemoryFailure. // convert string in current encoding to MemoryBlock End
Sub Constructor(Operation as CommonCryptoMB.CryptoOperation, Mode as CommonCryptoMB.CryptoMode, Algorithm as CommonCryptoMB.CryptoAlgorithm, Padding as CommonCryptoMB.CryptoPadding, key as text, Tweak as xojo.core.Memoryblock = nil, iv as xojo.core.MemoryBlock = nil, NumRounds as Integer = 0, Options as Integer = 0) // Create a cryptographic context. // Operation Defines the basic operation: Encrypt or Decrypt. // mode Specifies the cipher mode to use for operations. // Algorithm Defines the algorithm. // padding Specifies the padding to use. // iv Initialization vector, optional. Used by block ciphers with the following modes: // // Cipher Block Chaining (CBC) // Cipher Feedback (CFB and CFB8) // Output Feedback (OFB) // Counter (CTR) // // If present, must be the same length as the selected // algorithm's block size. If no IV is present, a NULL // (all zeroes) IV will be used. // This parameter is ignored if ECB mode is used or // if a stream cipher algorithm is selected. // key Raw key material, length keyLength bytes. Key length must be appropriate // for the selected operation and algorithm. Some algorithms provide for varying key lengths. // tweak Raw key material, length keyLength bytes. Used for the tweak key in XEX-based Tweaked CodeBook (XTS) mode. // Length of tweak key material must be appropriate for the selected operation and algorithm. Some // algorithms provide for varying key lengths. For XTS this is the same length as the encryption key. // // numRounds The number of rounds of the cipher to use. 0 uses the default. // options A word of flags defining options. See discussion // for the CCModeOptions type. // // Can raise exception for with errors kCCParamError and kCCMemoryFailure. End
Sub Destructor() // Cleanup End
Function Final1() As xojo.Core.MemoryBlock // Finish an encrypt or decrypt operation, and obtain the (possible) // final data output. // // Returns final bytes of the encrypted/decrypted data. This can be empty memoryblock. // // Raises exceptions on error. kCCBufferTooSmall indicates insufficent space in the dataOut buffer. // kCCAlignmentError When decrypting, or when encrypting with a block cipher with padding disabled, // kCCAlignmentError will be returned if the total number of bytes provided to Update is // not an integral multiple of the current algorithm's block size. // kCCDecodeError Indicates garbled ciphertext or the wrong key during decryption. This can only // be returned while decrypting with padding enabled. // // Except when kCCBufferTooSmall is returned, the Cryptor // can no longer be used for subsequent operations unless // Reset() is called on it. // // It is not necessary to call Final() when performing // symmetric encryption or decryption if padding is disabled, or // when using a stream cipher. // // It is not necessary to call Final() when aborting an operation. End
Function Final2() As MemoryBlock // Finish an encrypt or decrypt operation, and obtain the (possible) // final data output. // // Returns final bytes of the encrypted/decrypted data. This can be empty memoryblock. // // Raises exceptions on error. kCCBufferTooSmall indicates insufficent space in the dataOut buffer. // kCCAlignmentError When decrypting, or when encrypting with a block cipher with padding disabled, // kCCAlignmentError will be returned if the total number of bytes provided to Update is // not an integral multiple of the current algorithm's block size. // kCCDecodeError Indicates garbled ciphertext or the wrong key during decryption. This can only // be returned while decrypting with padding enabled. // // Except when kCCBufferTooSmall is returned, the Cryptor // can no longer be used for subsequent operations unless // Reset() is called on it. // // It is not necessary to call Final() when performing // symmetric encryption or decryption if padding is disabled, or // when using a stream cipher. // // It is not necessary to call Final() when aborting an operation. End
Sub Reset(iv as MemoryBlock) // Reinitializes an existing CCCryptorRef with a (possibly) // new initialization vector. Not implemented for stream ciphers. // // iv Optional initialization vector; if present, must // be the same size as the current algorithm's block size. // // The the only possible errors are kCCParamError and kCCUnimplemented which cause exceptions. // // This can be called on a cryptor with data pending (i.e. // in a padded mode operation before Final is called); // however any pending data will be lost in that case. End
Sub Reset(iv as xojo.core.memoryblock = nil) // Reinitializes an existing CCCryptorRef with a (possibly) // new initialization vector. Not implemented for stream ciphers. // // iv Optional initialization vector; if present, must // be the same size as the current algorithm's block size. // // The the only possible errors are kCCParamError and kCCUnimplemented which cause exceptions. // // This can be called on a cryptor with data pending (i.e. // in a padded mode operation before Final is called); // however any pending data will be lost in that case. End
Function Update(Data as MemoryBlock) As MemoryBlock // Process (encrypt, decrypt) some data. The result, if any, is returned as memoryblock. // // data: Data to process. // // Returns data. The result memoryblock can be smaller or bigger due to alignment. // // Can raise error. kCCBufferTooSmall indicates insufficent space in the dataOut buffer. // // This routine can be called multiple times. The caller does not need to align input data lengths to block sizes; input is // bufferred as necessary for block ciphers. // // When performing symmetric encryption with block ciphers, // and padding is enabled via kCCOptionPKCS7Padding, the total // number of bytes provided by all the calls to this function // when encrypting can be arbitrary (i.e., the total number // of bytes does not have to be block aligned). However if // padding is disabled, or when decrypting, the total number // of bytes does have to be aligned to the block size; otherwise // Final() will return kCCAlignmentError. // // Generally, when all data has been processed, call Final(). // // In the following cases, the CCCryptorFinal() is superfluous as // it will not yield any data nor return an error: // 1. Encrypting or decrypting with a block cipher with padding // disabled, when the total amount of data provided to // Update() is an integral multiple of the block size. // 2. Encrypting or decrypting with a stream cipher. End
Function Update(Data as string) As MemoryBlock // Process (encrypt, decrypt) some data. The result, if any, is returned as memoryblock. // // data: Data to process. // // Returns data. The result memoryblock can be smaller or bigger due to alignment. // // Can raise error. kCCBufferTooSmall indicates insufficent space in the dataOut buffer. // // This routine can be called multiple times. The caller does not need to align input data lengths to block sizes; input is // bufferred as necessary for block ciphers. // // When performing symmetric encryption with block ciphers, // and padding is enabled via kCCOptionPKCS7Padding, the total // number of bytes provided by all the calls to this function // when encrypting can be arbitrary (i.e., the total number // of bytes does not have to be block aligned). However if // padding is disabled, or when decrypting, the total number // of bytes does have to be aligned to the block size; otherwise // Final() will return kCCAlignmentError. // // Generally, when all data has been processed, call Final(). // // In the following cases, the CCCryptorFinal() is superfluous as // it will not yield any data nor return an error: // 1. Encrypting or decrypting with a block cipher with padding // disabled, when the total amount of data provided to // Update() is an integral multiple of the block size. // 2. Encrypting or decrypting with a stream cipher. // convert string in current encoding to MemoryBlock End
Function Update(Data as text) As xojo.Core.MemoryBlock // Process (encrypt, decrypt) some data. The result, if any, is returned as memoryblock. // // data: Data to process. // // Returns data. The result memoryblock can be smaller or bigger due to alignment. // // Can raise error. kCCBufferTooSmall indicates insufficent space in the dataOut buffer. // // This routine can be called multiple times. The caller does not need to align input data lengths to block sizes; input is // bufferred as necessary for block ciphers. // // When performing symmetric encryption with block ciphers, // and padding is enabled via kCCOptionPKCS7Padding, the total // number of bytes provided by all the calls to this function // when encrypting can be arbitrary (i.e., the total number // of bytes does not have to be block aligned). However if // padding is disabled, or when decrypting, the total number // of bytes does have to be aligned to the block size; otherwise // Final() will return kCCAlignmentError. // // Generally, when all data has been processed, call Final(). // // In the following cases, the CCCryptorFinal() is superfluous as // it will not yield any data nor return an error: // 1. Encrypting or decrypting with a block cipher with padding // disabled, when the total amount of data provided to // Update() is an integral multiple of the block size. // 2. Encrypting or decrypting with a stream cipher. End
Function Update(Data as xojo.Core.MemoryBlock) As xojo.Core.MemoryBlock // Process (encrypt, decrypt) some data. The result, if any, is returned as memoryblock. // // data: Data to process. // // Returns data. The result memoryblock can be smaller or bigger due to alignment. // // Can raise error. kCCBufferTooSmall indicates insufficent space in the dataOut buffer. // // This routine can be called multiple times. The caller does not need to align input data lengths to block sizes; input is // bufferred as necessary for block ciphers. // // When performing symmetric encryption with block ciphers, // and padding is enabled via kCCOptionPKCS7Padding, the total // number of bytes provided by all the calls to this function // when encrypting can be arbitrary (i.e., the total number // of bytes does not have to be block aligned). However if // padding is disabled, or when decrypting, the total number // of bytes does have to be aligned to the block size; otherwise // Final() will return kCCAlignmentError. // // Generally, when all data has been processed, call Final(). // // In the following cases, the CCCryptorFinal() is superfluous as // it will not yield any data nor return an error: // 1. Encrypting or decrypting with a block cipher with padding // disabled, when the total amount of data provided to // Update() is an integral multiple of the block size. // 2. Encrypting or decrypting with a stream cipher. End
Note About
Property Algorithm As CommonCryptoMB.CryptoAlgorithm
Property Operation As CommonCryptoMB.CryptoOperation
Property Options As Integer
Property Padding As CommonCryptoMB.CryptoPadding
End Class
The biggest plugin in space...




Links
MBS FileMaker tutorial videos