# Class type Cryptokit.Padding.scheme

    class type scheme = object .. end

Generic interface of a padding scheme.

    method pad : bytes -> int -> unit

`pad buf used` is called with a byte array `buf` containing valid input data at positions `0, ..., used-1`. The `pad` method must write padding characters in positions `used` to `Bytes.length str - 1`. It is guaranteed that `used < Bytes.length str`, so that at least one character of padding must be added. The padding scheme must be unambiguous in the following sense: from `buf` after padding, it must be possible to determine `used` unambiguously. (This is what method `Cryptokit.Padding.scheme.strip` does.)

    method strip : bytes -> int

This is the converse of the `pad` operation: from a padded byte array `buf` as built by method `pad`, `strip buf` determines and returns the starting position of the padding data, or equivalently the length of valid, non-padded input data in `buf`. This method must raise `Error Bad_padding` if `buf` does not have the format of a padded block as produced by `pad`.