wechatpy.crypto.pkcs7   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Test Coverage

Coverage 87.5%

Importance

Changes 0
Metric Value
eloc 19
dl 0
loc 24
rs 10
c 0
b 0
f 0
ccs 14
cts 16
cp 0.875
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A PKCS7Encoder.encode() 0 8 2
A PKCS7Encoder.decode() 0 6 3
1
# -*- coding: utf-8 -*-
2 10
from __future__ import absolute_import, unicode_literals
3 10
from wechatpy.utils import to_binary, byte2int
4
5
6 10
class PKCS7Encoder(object):
7 10
    block_size = 32
8
9 10
    @classmethod
10
    def encode(cls, text):
11 10
        length = len(text)
12 10
        padding_count = cls.block_size - length % cls.block_size
13 10
        if padding_count == 0:
14
            padding_count = cls.block_size
15 10
        padding = to_binary(chr(padding_count))
16 10
        return text + padding * padding_count
17
18 10
    @classmethod
19
    def decode(cls, decrypted):
20 10
        padding = byte2int(decrypted[-1])
21 10
        if padding < 1 or padding > 32:
22
            padding = 0
23
        return decrypted[:-padding]
24